0%

MySQL 导入导出相关操作

主要介绍 MySQL 导入导出相关操作,主要有:

  • 使用 mysqldump 导出 csv, tsv 格式
  • 使用 LOAD DATA 将 csv, tsv数据导入到表中
  • 其他一些限制条件的导入导出

导出操作

导出 csv 格式

1
mysqldump -uroot -p test content -t -T /tmp --skip-tz-utc --fields-terminated-by=',' --fields-enclosed-by=\"

导出 tsv 格式

1
mysqldump -uroot -p test content -t -T /tmp --skip-tz-utc --fields-terminated-by='\t'

mysqldump 导出 csv、tsv 格式只能在本地进行,无法远程操作
-T 为目录path,不是文件名,并且需要 mysql 可写权限
--tz-utc 默认打开,会影响timestamp,所以需要 --skip-tz-utc

按条件导出

1
mysqldump -uroot -p dbname tablename -w "Updated >= '2016-03-03 17:28:29'" -t --skip-extended-insert > /data/tmp/tablename-delta-0311.sql

只导出结构的 SQL

1
mysqldump -uroot -p dbname tablename -d /tmp/content.sql

只导出数据的 SQL

1
mysqldump -uroot -p dbname tablename -t /tmp/content.sql

只导出指定字段数据

注意这里使用的是 mysql -e 命令

导出指定字段 tsv:

1
mysql -uroot -p -e " SELECT id, appName, appVersion FROM test.ua_message INTO OUTFILE '/tmp/ua_message.tsv' "

可修改数据格式,导出指定字段 csv

1
mysql -uroot -p -e " SELECT id, appName, appVersion FROM test.ua_message INTO OUTFILE '/tmp/ua_message.tsv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' "

导入操作

忽略错误导入,如忽略逐渐冲突

-f 参数

1
mysql -uroot -p -f dbname < /data/tmp/tablename-delta-0304.sql

导入 csv、tsv

1
2
3
LOAD DATA INFILE '/tmp/data.csv' INTO table `tablename` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';

LOAD DATA INFILE '/tmp/data.tsv' INTO table `tablename` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n';

合并导入

将 t1 表与 t2 表数据按照主键合并后,导入到新表:

1
INSERT INTO `tablename_v1` (id, c1, c2) select t1.id, t1.c1, t2.c2 from t1, t2 where t1.id = t2.id