【问题标题】:MySQL LOAD DATA INFILE with special deliminators带有特殊分隔符的 MySQL LOAD DATA INFILE
【发布时间】:2011-08-30 20:25:54
【问题描述】:

我的数据具有由\u0001 分隔的字段和由\u0002\n 分隔的记录。我想使用LOAD DATA INFILE 一次将所有数据导入 MySQL 数据库。我知道\u0001可以写成X'01',但是我不知道怎么写`\u0002\n'。

这是我目前所拥有的。

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

上面的 SQL 语句有效,但我担心\u0002 可能会与数据一起导入数据库。

我知道\u0002 可以写成X'02',但我不太确定如何将X'02'\n 结合使用。

有什么建议吗?

【问题讨论】:

  • 呵呵,我的建议是用你现在的方法,然后在导入完成后替换\u00002(所以,你不必等待完美的解决方案)
  • 这正是我所做的。谢谢

标签: mysql delimiter load-data-infile number-with-delimiter


【解决方案1】:

看起来您正在尝试实现 iTunes EPF :), X'01' + '\n' => X'020a' 所以你的查询可以写成:

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

如果您真的在努力实现 iTunes EPF 集成,您可以使用下一个查询:

LOAD DATA LOCAL INFILE '<path to your file>' INTO TABLE `<table name>` CHARACTER SET UTF8MB4 FIELDS TERMINATED BY X'01' LINES TERMINATED BY X'020a' IGNORE 34 LINES;

比如苹果提供了 4 字节的 UTF8 文本数据,可以只用 UTF8MB4 字符集存储在 MySQL 中(我的意思是更正所有文本记录的端口)。 前 34 行将被忽略(应该 - 它是“法律政策”数据)。 并且需要从文件中删除最后一行。 (我在移植前用脚本将其删除)

希望它对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2012-09-23
    • 2012-10-05
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多