2013-10-09 156 views
0

我试图导入一个大的csv文件到Mysql中。不幸的是,文件中的数据由空格和制表符分隔。因此,无论何时将数据加载到我的表中,我最终会得到无数个空单元(因为Mysql只能识别一个字段分隔符)。在导入之前修改数据不是一个选项。将多个分隔符/字段分隔符导入到Mysql CSV文件

这里是数据的一个示例:

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

(其中每一行的所述第二和第三值是由制表符分隔)

任何想法?

回答

0

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

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

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

MySQL import CSV file using regex delimiter

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的部分。