使用多个分隔符/字段分隔符将CSV文件导入Mysql

时间:2013-10-09 01:01:51

标签: php mysql csv import

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

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

以下是数据示例:

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

MySQL import CSV file using regex delimiter

答案 1 :(得分:0)

假设您正在使用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。