举例说明
最近更新时间: 2024-10-17 17:10:00
假设有数据库loaddata和表test:
CREATE DATABASE LOADDATA;
USE LOADDATA;
CREATE TABLE `test` (
`a` int NOT NULL,
`b` int DEFAULT NULL,
`c` int NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 已有数据文件test1.txt格式如下:
"1","11","111"
"2","22","222"
将test.txt导入test表可以使用下面指令开启2个线程导入:
./load_data --ip=10.0.1.9 --port=15002 --user=test --password=test --db_table=loaddata.test --file=/data1/test1.txt --field_enclosed="\"" --field_terminated="," --log_level=2
- 已有数据文件test2.txt格式如下:
"3","aaa","11","111"
"4","bbb","22","222"
想要跳过test2.txt的第二列数据,将数据导入表test,可以使用以下指令:
./load_data --ip=10.0.1.9 --port=15002 --user=test --password=test --db_table=loaddata.test --file=/data1/test2.txt --field_enclosed="\"" --field_terminated="," --fields="(a,@jump,b,c)" --log_level=2
- 已有数据文件test3.txt格式如下:
"5",,"111"
"6",,"222"
想将第二列的空值导入表中为NULL,可以使用fields参数结合suffix_sqls参数来实现,具体指令如下:
./load_data --ip=10.0.1.9 --port=15002 --user=test --password=test --db_table=loaddata.test --file=/data1/test3.txt --field_enclosed="\"" --field_terminated="," --fields="(a, @b, c)" --suffix_sqls="SET b = NULLIF(@b,'')" --log_level=2
- 获取密码加密后的密文:
./load_data --password=test --encrypt_pwd --encrypt_secret_key="abcdefgh"
说明:使用密钥"abcdefgh"将密码test加密,如果不指定encrypt_secret_key则使用默认密钥
5.使用mydumper导出CSV格式数据后,再使用loaddata导入:
###导出数据:
./mydumper --host=172.27.25.11 --port=15002 --user=test1 --password=test1 -B loaddata --tables-list test --load-data -o /data/backup/data2
###导入数据:
./load_data --ip=172.27.25.11 --port=15002 --user=test1 --password=test1 --db_table=loaddata.test --file=/data/backup/data2/loaddata.test.00000.dat --log_level=2