我正在尝试将一个大的csv文件导入Mysql。遗憾的是,文件中的数据由空格和制表符分隔。
因此,每当我将数据加载到表中时,我最终都会得到无数的空单元格(因为Mysql只能识别一个字段分隔符)。在导入数据之前修改数据不是一种选择。
下面是一个数据示例:
# 1574 1 1 1
$ 1587 6 6 2
$115 1878 8 9 23
(其中每行的第二个和第三个值由制表符分隔)
有什么想法吗?
如果我的目标只是导入文件,我会使用sed -i 's/,/ /g' *.txt
创建一个需要担心的分隔符。
我喜欢 CSV,但也许有一个用双引号括起来的字符串包含逗号或空格,在这种情况下,这并不完美。它仍然会导入,只是会修改这些字符串。
在这种情况下,我在生产中使用的另一种方法是统计/转移。 有一种语法语言可以创建 shell 脚本来转换文件并指定多个分隔符。
MySQL 使用正则表达式分隔符导入 CSV 文件
假设你正在使用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。