带有自定义反斜杠+管道附件的加载数据文件问题

时间:2019-08-08 12:57:51

标签: mysql sql escaping backslash load-data-infile

我需要使用以下结构从csv执行LOAD DATA INFILE:

\|IP_ADDRESS\|;\|EVENT_DATE\|;\|USER_AGENT\|;\|CATEGORY_ID\|

我正在发出此查询:

LOAD DATA INFILE '/tmp/input.csv' 
INTO TABLE my_table
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
ENCLOSED BY '\|'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(IP_ADDRESS,EVENT_DATE,USER_AGENT,CATEGORY_ID)

但是我无法弄清楚如何让MySql理解字段\| ...按原样运行 使MySQl认为列中的值就像{{1} },即将反斜杠视为管道的转义序列,然后将其删除。

我尝试了几种转义序列(|content of column|\\|\\\|),但我总是遇到此错误:

  

#1083-字段分隔符参数不是预期值;检查手册

然后我尝试设置一个不同的或空的ESCAPED BY字符(按照手册的https://dev.mysql.com/doc/refman/8.0/en/string-literals.html#character-escape-sequences中的此页面),但是随后外壳被完全忽略,并且收到插入错误:

  

日期时间值不正确:'\ | 2019-06-21 11:16:36.0 \ |'对于第1行的“ EVENT_DATE”列

我尝试了几种不同的主题,但是无法解决这个问题。我的最后一个选择是\\\\\|文件来更改封闭顺序或逐行读取文件,但是我想避免这种情况,因为我不确定是否会影响表内容编辑(我的 real 表内容,其文件目录比此处显示的示例要多)。

一些信息:我正在运行此MySQL版本

  

适用于Linux(x86_64)的MySQL Ver 14.14 Distrib 5.6.45,使用EditLine包装器

在Azure CentOS计算机上,不能,我不能更改文件格式。

0 个答案:

没有答案