如何使用LOAD DATA INFILE将一个非常大的管道分隔的text / csv文件中的选定列插入到mysql中

时间:2014-03-11 18:54:19

标签: php mysql

已经存在类似的问题,但我想知道如何为非常大的数据集实现此目的。

@dummy方法等需要很长时间。

另外,如果电子表格和表格中的列名称不同,我该怎么办?

1 个答案:

答案 0 :(得分:0)

LOAD DATA INFILE '/tmp/actor.tsv'
REPLACE INTO TABLE actor
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '"'
(@f1, @f2, @f3)
SET first_name = @f1, last_name = @f3

<强>更新即可。如果字段数很大,请使用此脚本生成LOAD命令:

echo -n "LOAD DATA INFILE '/tmp/actor.tsv'
REPLACE INTO TABLE actor
FIELDS TERMINATED BY '\\t'
OPTIONALLY ENCLOSED BY '\"'
("
comma=""
for i in `seq 300`
do
    echo -n "$comma @f$i"
    comma=","
done
echo ")"
echo "SET first_name = @f1, last_name = @f3"