【问题标题】:MySQL Load Data Infile (CSV) : replace/remove vertical tabsMySQL Load Data Infile (CSV):替换/删除垂直标签
【发布时间】:2019-03-05 13:48:42
【问题描述】:

当使用 LOAD DATA INFILE 加载带有 CHARACTER SET 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' 的情况下导入它时,我收到一个错误,指出 "Invalid utf8 character string:..." 在第一个字段中 \v 是来了。

Notepad++ 向我显示了一个“VT”,所以我知道它是一个带有转义字符“\v”的垂直制表符。用 Excel(它显示为“□”)或记事本替换它到目前为止不起作用。

将其打印到我的 WebApp 前端显示:

'u000b' for \v` 
'u001d' for a Group Seperator`

问题: 如何删除这些小 f*** - 甚至可以在导入它们之前完成,但我也无法管理。

【问题讨论】:

  • 要在导入文件之前删除它们,您可以使用 trsed,或者用 awk、Python 或其他语言编写一个简短的脚本你的选择。 tr 旨在完全满足您的需求,但您需要获得 Windows 版本(GnuWin32 CoreUtils 有它)。

标签: mysql sql excel notepad


【解决方案1】:

比我想象的要容易得多:

NotePad++ 也可以让您搜索 unicode 字符。 而不是\v 我使用\u000b 来搜索和替换字符。 GS 符号\u001d

相同

如果您不想使用 unicode 符号,请确保将 搜索模式设置为 'extended'

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2012-10-05
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多