我需要使用以下结构从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计算机上,不能,我不能更改文件格式。