【问题标题】:Import CSV file into Mysql with Multiple Delimiters/Field Separators使用多个分隔符/字段分隔符将 CSV 文件导入 Mysql
【发布时间】:2013-10-16 04:11:26
【问题描述】:

我正在尝试将一个大的 csv 文件导入 Mysql。不幸的是,文件中的数据由空格和制表符分隔。

结果,每当我将数据加载到我的表中时,我都会得到无数的空单元格(因为 Mysql 只识别一个字段分隔符)。不能在导入前修改数据。

以下是数据示例:

# 1574    1 1 1
$ 1587    6 6 2
$115 1878    8 9 23

(每行的第二个和第三个值用制表符分隔)

有什么想法吗?

【问题讨论】:

    标签: php mysql csv import


    【解决方案1】:

    如果我的目标只是导入文件,我会使用sed -i 's/,/ /g' *.txt 来创建一个需要担心的分隔符。

    我喜欢 CSV,但也许有一个包含逗号或空格的双引号括起来的字符串,在这种情况下这并不完美。它仍然会导入,只是会修改这些字符串。

    在这种情况下,我在生产中使用的另一种方法是 Stat/Transfer。有一种语法语言可以创建一个 shell 脚本来转换文件并指定多个分隔符。

    MySQL import CSV file using regex delimiter

    【讨论】:

      【解决方案2】:

      假设您正在使用 LOAD DATA INFILE 试试这个:

      load data local infile 'c:/somefile.txt' into table tabspace 
      columns terminated by ' '
      (col1, @col23, col4, col5)
      set col2 = left(@col23, instr(@col23,char(9))-1),
          col3 = substr(@col23,instr(@col23,char(9))+1);
      

      请注意,分隔符是一个空格,因此第二列包含 col2/col3 数据。这分配给变量@col23,然后将其拆分并将部分分配给col2和col3。

      【讨论】:

        猜你喜欢
        • 2013-08-13
        • 2011-06-16
        • 2017-01-22
        • 2015-11-01
        • 2014-07-24
        • 1970-01-01
        • 2021-11-19
        • 2021-01-17
        • 1970-01-01
        相关资源
        最近更新 更多