MySQL:将csv导入带引号的表中

标签 mysql sql csv sql-insert load-data-infile

我有一个 csv,其中每一行都以引号开头,也以引号结尾。将 csv 加载到表中时如何忽略行开头和结尾的引号?

LOAD DATA LOCAL INFILE '/path/data.csv' 
INTO TABLE test1 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\"\n'
IGNORE 1 ROWS;

我已经尝试过

OPTIONALLY ENCLOSED BY '"'

但这指的是每个特定字段而不是整行。

最佳答案

正如 Shadow 和 Barmar 所评论的,答案就在 the documentation :

If all the input lines have a common prefix that you want to ignore, you can use LINES STARTING BY 'prefix_string' to skip the prefix and anything before it. If a line does not include the prefix, the entire line is skipped. [...] The FIELDS TERMINATED BY, LINES STARTING BY, and LINES TERMINATED BY values can be more than one character.

因此,使用:

LOAD DATA LOCAL INFILE '/path/data.csv' 
INTO TABLE test1 
    FIELDS TERMINATED BY ';' 
    LINES STARTING BY '"'
    LINES TERMINATED BY '"\n'
    IGNORE 1 ROWS;

关于MySQL:将csv导入带引号的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54260891/

相关文章:

java - 将 CSV 文件中的字符串解析为整数

mysql - 让 ruby​​ activerecord 与 mysql 适配器一起工作

mysql - 对同一张表使用左连接还是有更好的方法?

mysql - sql:获取稍微修改的查询以及 sql select 查询的计数?

sql - 在 Postgres 中生成 UUID

R - 从 csv 到 xts 的股市数据

php - 从显示空白记录的 URL 调用

mysql - 从 mysql 数据库中的同一个表打印父层次结构

SQL Server 存储过程从另一个数据库表更新一个数据库表

mysql - sqlyog 将查询结果导出为 csv