我在将数据加载到MySQL时遇到了一个看似基本的问题。我正在使用:
LOAD DATA LOCAL INFILE 'C:/.../Contrato.txt'
INTO TABLE schema.contrato
FIELDS TERMINATED BY ';' ENCLOSED BY '|' LINES TERMINATED BY '/r/n' IGNORE 0 LINES;
文件中的每一行都是这样的,由另一个程序生成:
|abc|;|cde|;|123|;|456|;|name|\r\n
执行加载时,除最后一个字段外,一切似乎都正常加载。当我看表时,最后一个字段实际显示'|'名字周围的字符。这不是世界末日,但奇怪的是,它会做到这一点。截至目前,我正在通过添加';'来修复它就在\ r \ n字符之前。
这是应该做的吗?为什么我需要在行终止符之前添加字段终止符以删除字段封闭符?
答案 0 :(得分:0)
我可以在一行中复制效果,其中有一行,多行我只得到一个条目,其最后一列的条目为" name | | ABC" 。
我改变了' / r / n'到' \ r \ n' &安培;对于具有单个条目和文件的文件,负载正常工作多个条目&周围的|被正确删除
LOAD DATA LOCAL INFILE 'C:/.../Contrato.txt'
INTO TABLE schema.contrato
FIELDS TERMINATED BY ';' ENCLOSED BY '|' LINES TERMINATED BY '\r\n' IGNORE 0 LINES;
正确的MySQL转义字符是反斜杠而不是转发符号,不会被视为特殊字符 - 因此您的原始代码正在查找4字符序列" forwardslash r forwardslash n"终止行