我需要将文件内容加载到表中。文件包含用逗号分隔的文本。这是一个很大的文件。我不能改变它已经给我这样的文件。
12.com,128.15.8.6,TEXT1,no1,['128.15.8.6']
23com,122.14.10.7,TEXT2,no2,['122.14.10.7']
45.com,91.33.10.4,TEXT3,no3,['91.33.10.4']
67.com,88.22.88.8,TEXT4,no4,['88.22.88.8', '5.112.1.10']
我需要将文件加载到一个包含四列的表中。例如,上面的最后一行应该在下表中:
table.col1:67.com
表2.2:88.22.88.8
表3.col3:text3
表4:no3
表5.col5:['88.22.88.8','5.112.1.10']
使用mysql工作台,我创建了一个表,其中有五列都是 varchar
. 然后运行以下sql命令:
LOAD DATA INFILE '/var/lib/mysql-files/myfile.txt'
INTO TABLE `mytable`.`myscheme`
fields terminated BY ','
最后一列字符串(其中包含我不想分隔的逗号)会导致问题。
Error:
Error Code: 1262. Row 4 was truncated; it contained more data than there were input columns
请问我怎样才能克服这个问题。
3条答案
按热度按时间qvsjd97n1#
简单地使用加载数据填充并不是那么困难-注意变量的使用。
k7fdbhmy2#
这太长了,不能发表评论。
你的csv文件中有一个可怕的数据格式。我认为你应该重新生成文件。
mysql有一些工具可以帮助您处理这些数据,特别是
OPTIONALLY ENCLOSED BY
中的选项LOAD DATA INFILE
. 唯一需要注意的是,这允许一个转义字符而不是两个。我的第一个建议是用另一个字符替换字段分隔符——tab或
|
我想起来了。字段中不用于值的任何字符。第二种是使用双引号
OPTIONALLY ENCLOSED BY
. 然后更换'['
与'"['
以及]
与']"'
在数据文件中。即使无法重新生成文件,也可以使用grep、pearl或python之类的工具对其进行预处理,以进行简单的替换。然后可以使用mysql的导入工具来加载文件。
cqoc49vn3#
在这种情况下,为了避免与逗号不正确存在相关的问题,您可以导入行。。在单列表中(在medimun文本上键入文本..根据需要)
热利用
locate
(一个用于第一个逗号,一个用于第二个,一个用于第三个..)以及substring
您可以从每行中提取所需的四列最后是一个
insert select
您可以填充目标表。。根据需要分开柱子。。