MySQL 批量加载

Posted

技术标签:

【中文标题】MySQL 批量加载【英文标题】:MySQL bulk load 【发布时间】:2019-02-22 06:56:20 【问题描述】:

我正在尝试将 csv 文件加载到 mysql 表中。 分隔符:,(逗号)

作为源数据的一部分,很少有字段值用双引号括起来,在我们的双引号内, / 是字段数据的一部分的记录很少,我们需要对其进行转义。

默认情况下 / 被转义,当我指定“作为转义字符”时被转义。由于我们在同一个文件中有多个特殊字符,我们需要对多个特殊字符进行转义。

任何建议

例如:

 id name location
 1  A   "Location , name here"
 2  B   "Different Location"
 3  C   Another Location
 4  D   Location / with escape character  

LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

【问题讨论】:

【参考方案1】:

我认为这是不可能的。参考LOAD DATA reference

任何字段或行处理选项都可以指定一个空字符串 ('')。如果不为空,FIELDS [OPTIONALLY] ENCLOSED BY 和 FIELDS ESCAPED BY 值必须是单个字符。

ESCAPED BY 字段仅支持单个字符。 我的建议是使用任何编程语言(例如 php、C# 等)使用正则表达式逐行打开和处理文件

【讨论】:

以上是关于MySQL 批量加载的主要内容,如果未能解决你的问题,请参考以下文章

mysql jdbc连接器批量更新异常更新计数不如预期

使用 jdbc 将行批量插入 Spanner 时加载性能低

oracle的批量插入和mysql的批量插入不一致,mybatis要怎么做兼容

第八篇|Spark SQL百万级数据批量读写入MySQL

我可以向 Oracle 发送“批量”插入吗?

从文件批量插入引发错误无法批量加载,因为无法打开文件