无法将UTF-8 .txt文件导入MySQLWorkbench

时间:2017-03-17 14:49:52

标签: mysql utf-8 mysql-workbench

我有 UTF-8 格式的 .txt 文件,其中包含我尝试在已创建的已包含行的表格中导入的信息。

.txt文件中的信息结构如下:(引号 包含在.txt文件中)

"鲍勃史密斯,25,加利福尼亚,,,,单身,"

"约翰,DOE,72,内华达,, 2,1,已婚,"

"威尔,史密斯,22,德克萨斯,1000005,2,1,已婚,"

我使用的查询是:

LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE mytable FIELDS ENCLOSED BY '"' TERMINATED BY ','  LINES TERMINATED BY '\n'

所发生的是所有这些记录都被插入但是像这样插入

鲍勃,NULL,NULL,NULL,NULL,NULL,NULL,NULL

约翰,NULL,NULL,NULL,NULL,NULL,NULL,NULL

威尔,NULL,NULL,NULL,NULL,NULL,NULL,NULL

就像" 没有被捕到最后或者奇怪的东西。我在这里做错了吗?

3 个答案:

答案 0 :(得分:2)

根据提供的示例数据,您的字段不是用引号括起来,而是整个记录是。

您可以使用STARTING BY选项忽略初始引用,并且应该自动忽略尾随引用。

我认为你需要的是:

LOAD DATA LOCAL INFILE'your_file.txt'INTO TABLE your_table FIELDS TIRINATED BY','LINES STARTING'''终止于'\ n';

答案 1 :(得分:1)

文本文件的格式没有任何意义。 (奇怪的是,导入器处理它的方式也没有任何意义。但是我们无法控制导入器,所以让我们忽略它。)

双引号必须包围每个字段,而不是每一行。 ENCLOSED BY '"'子句引用字段,而不是行。因此,您告诉导入者您的字段用引号括起来,但是您的行用引号括起来。因此,导入器会将您的每一行视为一个字段。

(然后,导入器继续用逗号进一步删除你的行,这没有任何意义,因为逗号在引号内,所以它应该忽略它们,所以导入器也有大脑损坏。)

答案 2 :(得分:1)

使用FIELDS封装的'''声明输入文件应该用"包含EACH字段数据。因此输入文件应如下

"Bob","Smith","25","California","","","","Single",
"John","Doe","72","Nevada","","2","1","Married",
"Will","Smith","22","Texas","1000005","2","1","Married",

那应该将数据添加到字段