我有 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
就像" 没有被捕到最后或者奇怪的东西。我在这里做错了吗?
答案 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",
那应该将数据添加到字段
中