Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用LOAD DATA INFILE将超大管道分隔文本/csv文件中的选定列插入mysql_Php_Mysql - Fatal编程技术网

Php 如何使用LOAD DATA INFILE将超大管道分隔文本/csv文件中的选定列插入mysql

Php 如何使用LOAD DATA INFILE将超大管道分隔文本/csv文件中的选定列插入mysql,php,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 更新。如果字段数

已经有一个类似的问题,但我想知道如何在非常大的数据集上实现这一点

@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"

(@f1、@f2、@f3)应该包括文件中的所有列吗?我不知道。我会测试。我猜MySQL会忽略列的其余部分。f1、f2等表示列名或列号吗?f1、f2、f3只是变量名。他们可以是任何人。first_name,last_name是表中的列名。我认为这并不能解决我的问题,因为我只想针对text/csv文件中的特定列