举例说明

最近更新时间: 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;
  1. 已有数据文件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
  1. 已有数据文件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
  1. 已有数据文件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
  1. 获取密码加密后的密文:
./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