php - 如何使用 LOAD DATA INFILE 将选定的列从非常大的管道分隔文本/csv 文件插入到 mysql

标签 php mysql

已经有一个类似的问题,但我想知道如何针对非常大的数据集实现此目的。

@dummy 方法等将花费很长时间。

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

最佳答案

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"

关于php - 如何使用 LOAD DATA INFILE 将选定的列从非常大的管道分隔文本/csv 文件插入到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334073/

相关文章:

PHP 网络响应

php - mysql显示所有行的计算平均值

PHP 为什么导入的csv文件只插入csv的第一行到SQL

php - 严格标准 : Only variables should be assigned by reference in ADONewConnection

php - 将多维子数组值与其他子数组值相加

php - 将 ID 传递给函数中的 pre_get_posts 查询

mysql - Docker CentOS - mariadb(退出状态 0;预期)

mysql - 在 sails.js 中,如何在模型的 beforeCreate 方法中访问 session 变量?

php - 使用 axios 以正确的时间从数据库中获取条目

php - eBay API 单个项目调用,项目细节