当使用 LOAD DATA INFILE 加载字符集 latin1(表也编码为 latin1)的 csv 文件时,所有垂直制表符都显示为“□”。 替换 'u000b' 和 '\v' 都不起作用。
LOAD DATA INFILE 'database.csv'
INTO table taxa
CHARACTER SET latin1
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(columns1...@column6...column19)
SET @column6 = REPLACE(@column6, '\u000b', '\t')
当我将表转换为 UTF8 并使用指定的“UTF8”导入该表时,我收到一条错误消息,指出\v 所在的第一个字段中的“无效的 utf8 字符串:...”即将到来。
Notepad++ 显示了一个“VT”,所以我知道它是一个带有转义字符“\v”的垂直制表符。用 Excel(显示为“□”)或 NotePad 替换它到目前为止不起作用。
将其打印到我的 WebApp 前端显示:
'u000b' for \v`
'u001d' for a Group Seperator`
问题: 如何删除这些小东西 - 甚至可以在导入它们之前完成,但我也无法做到这一点。
最佳答案
比我想象的要容易得多:
NotePad++ 还可以让您搜索 unicode 字符。
我使用 \u000b 而不是 \v
搜索并替换字符。 GS 符号同样 \u001d
如果您不想使用 unicode 符号,请务必将搜索模式设置为“扩展”。
关于MySQL 加载数据文件 (CSV) : replace/remove vertical tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55004345/