目标
千万行的的 json 数据或者 CSV 快速导入 MYSQL 的场景。
解决方案
脚本代码
使用 php / python 或者你熟悉的语言,按行解析,插入。
tips:
- 一次解析多行,提交效率
- 分组插入,减少 MySQL 插入次数
- 注意内存
每次解析的行数和每次插入的行数按具体情况 ,主要考虑运行内存和MySQL的压力情况。
load data
对于 CSV 我们可以直接使用 SQL,可以直接运行,或者配合其他脚本使用。
LOAD DATA LOCAL INFILE '/xxx.csv' |
mysqlimport
对于 CSV 我们可以直接使用
./mysqlimport -u root -p --local --delete --fields-terminated-by="," --lines-terminated-by="\r\n" --ignore-lines=1 --columns=company,website testdata '/puresai.csv' |
MySQL Shell
mysqlsh mysql://root:[email protected]:3366 -- util import-table puresai.json "data_b*" data_d.tsv.zst --schema=mydb --table=twitter --osBucketName=mybucket |
总结
对于 CSV 或者格式化文本使用 mysqlimport、load data 都是不错的选择,而脚本解析是最有普适性的,假如需要打印日志、进度或者字段变更,使用 php/python 等去解析更为灵活。