我能够将 csv 文件上传到 MySQL,但是当在一个术语内部使用时无法区分逗号分隔的单词。
有 5 个字段由“,”分隔,但在某些行中,一个字段内部有“,”,它错误地分隔了本应是完整术语“abc, def”的两个词。下面是示例。
好行:field1,field2,field3,field4,field5
字段3不区分的行:field1,field2,"field3a, field3b",field4,field5
代码:
$upload = mysqli_query($cons,
'LOAD DATA LOCAL INFILE "file_name.csv"
INTO TABLE table_name
FIELDS TERMINATED by \'\,\'
LINES TERMINATED BY \'\n\'
) or die(mysqli_error($cons));
请注意,它适用于“好行”,但对于其他类型的行,“field3b”作为“field4”插入到 MySQL 表中。
最佳答案
您正在寻找 FIELDS OPTIONALLY ENCLOSED
option .
$upload = mysqli_query($cons,
"LOAD DATA
LOCAL INFILE 'file_name.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'"
);
注意:我将 php 单引号切换为双引号,因此查询中需要的转义更少。
关于mysql - 将 csv 文件加载到 MySQL,字段中以逗号分隔和逗号分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54270280/