使用MySQL LOAD DATA INFILE和不可打印的字符分隔符

时间:2009-09-29 16:33:27

标签: mysql load-data-infile delimiter non-printable

我有一些供应商数据,其中SOH(ASCII字符1)作为字段分隔符,STX(ASCII字符2)作为记录分隔符。是否可以使用LOAD DATA INFILE加载此数据而无需预先处理文件并将这些字符替换为更常见的字符?

5 个答案:

答案 0 :(得分:7)

我明白了。

LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE my_table 
    CHARACTER SET UTF8 
    FIELDS TERMINATED BY X'01'
    LINES TERMINATED BY X'02'
    (col1, col2, col3);

答案 1 :(得分:1)

您可以尝试FIELDS TERMINATED BY _ascii 0x02。我不知道它是否适用于LOAD DATA INFILE,但它适用于SELECT(即SELECT _ascii 0x61会产生'a')。

答案 2 :(得分:1)

如果您正在使用mysqlimport,则字段为terminate-by和lines-terminated-by等的十六进制值格式为:

mysqlimport --local --user = username --password = secret --ignore-lines = 4 --default-character-set = UTF8 --fields-terminated-by = 0x01 --lines-terminated-by = 0x02 --verbose databasename thefiletoimport

答案 3 :(得分:0)

你可以尝试直接在字符串文字内发送ascii字符..如果你的连接没有分配字符集或编码,那么mysql可能只是接受它作为一个有效的字符串。您必须通过网络连接或将数据传输到mysql客户端来完成。我不认为你能够在控制台输入它。

答案 4 :(得分:0)

  

X' 01'

终止的领域

适合我