将CSV导入到MySQL

20

我创建了一个数据库和一个表,还创建了所有需要的字段,包括一个用作行ID的字段。CSV文件不包含ID字段,也不包含列头。虽然我是新手但一直在尝试弄清楚这个问题。我不是偷懒来找答案的,而是在寻找方向。

我正在尝试找出如何导入CSV文件,并从第二个字段开始导入数据,因为我希望自动递增填充ID字段,它是我创建的第一个字段。

我尝试了这些指令但没有成功。有人能提供一些见解吗?

  1. 你的CSV文件列名必须与表中的列名匹配
  2. 浏览到所需的.csv文件
  3. 使用LOAD DATA选项选择CSV文件
  4. 勾选“使用文件替换表格数据”选项
  5. 在“字段终止符”框中输入,
  6. 在“字段封闭符”框中输入"
  7. 在“字段转义符”框中输入\
  8. 在“行终止符”框中输入auto
  9. 在“列名”框中,按,分隔输入列名,例如column1,column2,column3
  10. 勾选“使用LOCAL关键字”选项。

编辑:

CSV文件大小为32.4kb

我CSV的第一行是:

Test Advertiser,23906032166,119938,287898,,585639051,287898 - Engager - 300x250,88793551,Running,295046551,301624551,2/1/2010,8/2/2010,Active,,Guaranteed,Publisher test,Maintainer test,example-site.com,,All,All,,Interest: Dental; custom geo zones: City,300x250,-,CPM,$37.49 ,"4,415","3,246",3,0,$165.52 ,$121.69 ,"2,895",805,0,0,$30.18 ,$37.49 ,0,$0.00 ,IMPRESSIONBASED,NA,USD

你尝试过使用PHPMyAdmin吗? - Kerry Jones
2
@Kerry:他正在列出phpMyAdmin的说明,所以我想是的。 - Ignacio Vazquez-Abrams
感谢您的回复,我发布的指令是我在phpMyAdmin中使用的,但我的信息被扔掉了。我在某个地方读到说最好的方法是让csv文件的列标题反映表中的字段。这是正确的吗? - 404error
3个回答

46

你可以在导入数据时让MySQL设置某些列的值。如果你的id字段被设置为自增,你可以在导入时将其设置为null,MySQL会自动分配递增的值。尝试在phpMyAdmin中的SQL选项卡中输入以下内容:

LOAD DATA INFILE 'path/to/file.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' SET id=null;

17
请查看此页面,看看它是否有您需要的内容。因为您只处理一个表格,所以这应该就是您所需的一切。 MYSQL LOAD DATA INFILE 例如,您可能会像这样做:
LOAD DATA INFILE 'filepath' INTO TABLE 'tablename' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column2, column3, column4);

那应该能给你一个概念。当然,如上链接所示,还有更多可以添加的选项。


谢谢,我会尝试一下,看看能否弄清楚。非常感谢。 - 404error

5
请确保在本地导入文件时使用LOAD DATA LOCAL INFILE。 :)

1
不要使用LOCAL,如果文件已经在本地。使用LOCAL可能会引入其他问题,例如“ERROR 1148(42000):此MySQL版本不允许使用所使用的命令”,这并不一定意味着MySQL版本不兼容参见此处讨论。使用LOCAL可能需要检查其他设置,例如标志的客户端和服务器端:local-infile。对我来说,它仍然无法正常工作。 - Katarzyna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接