【发布时间】:2018-01-01 22:21:16
【问题描述】:
我有一个 mysql 表,其中包含一个主 auto_increment 键。
我有 500 个 csv 文件,每个文件大约 3gb 的数据和一列中的大部分数据。
目前我正在使用以下方法将文件加载到 mysql 中:
#!/bin/bash
for file in /files/*.csv
do
mysql -e "load data local infile '$f' into table myTable FIELDS TERMINATED BY ','
ENCLOSED BY '\"' escaped by '\"' IGNORE 1 LINES" -u user -ppass
done
有什么方法可以提高性能?也许在插入时删除主键,然后再添加?或者有没有办法并行插入而不是一次插入一个文件?
【问题讨论】:
-
您可以尝试遍历每一行并为每一行执行插入操作。它的性能可能会也可能不会比一次性负载好,但它可能值得一试。
-
另外,就并行插入而言,我认为这不会有太大帮助,因为就引擎而言,处理步骤将是相同的,即相同的工作负载通过相同的通道,但我可能是错的