下面是我用来将 CSV 文件导入 MySQL 数据库的代码。它可以很好地划分所有字段及其记录。
LOAD DATA INFILE 'file.csv'
INTO TABLE customer FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'
(
ID, name, salary, address, status
);
Run Code Online (Sandbox Code Playgroud)
但是,当存在由逗号 (',') 组成的 VARCHAR 或 TEXT 字段时,它无法正常工作。这是因为我使用 FIELDS TERMINATED BY ',' 用于分隔每个字段记录。
因此,例如,如果客户的薪水为 50,000(双倍),则它会正常拆分字段。但是,如果客户地址是Java Road 15, Hong Kong (varchar/text),Java Road 15 将保存在地址字段中,而香港将保存在状态字段中。这基本上删除了状态字段内的任何记录。这个问题的任何线索?提前致谢。
字段是否用双引号或其他东西括起来?如果是这样,您可以在查询中添加“ENCLOSED BY”。
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n';
Run Code Online (Sandbox Code Playgroud)
“封闭于”指定用于标识字段开始和结束的字符。在您的情况下,字段用双引号括起来,例如“Java Road 15, Hong Kong”。即使字段中有字段分隔符,它也有助于 MYSQL 正确提取字段。
MYSQL 手册:https : //dev.mysql.com/doc/refman/5.7/en/load-data.html