2010-06-11 151 views
16

我已经创建了一个数据库和一个表。我还创建了我将需要的所有领域。我创建了46个字段,其中一个是我的行ID。 CSV不包含ID字段,也不包含列的标题。我对这一切都很陌生,但一直试图弄清楚这一点。我不是懒惰的要求答案,而是寻找方向。将CSV导入到MySQL

我想弄清楚如何导入CSV,但让它开始导入数据开始在第二个字段,因为我希望auto_increment将填写ID字段,这是我创建的第一个字段。

我试过这些说明,但没有运气。谁能提供一些见解?

  1. CSV文件的列名必须与你的表
  2. 浏览到您的.csv文件所需
  3. 选择CSV使用LOAD DATA选项
  4. 复选框“ON”为替换表与文件
  5. 数据在字段由框终止,类型,
  6. ˚F ields通过盒,"
  7. 在由框逃脱字段,\
  8. 在由框终止线,auto
  9. 封闭在列名框中键入列名由,分离像column1,column2,column3
  10. 复选框为ON 使用本地关键字

编辑:

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 
+0

您是否尝试过使用PHPMyAdmin? – 2010-06-11 19:30:16

+2

@Kerry:他列出了phpMyAdmin的说明,所以我会说是的。 – 2010-06-11 19:32:18

+0

感谢您的回复,我发布的指示是我在phpMyAdmin中使用的,但是我的信息被抛弃了。我在某处读到,他们最好的办法是让csv上的列标题反映我表格中的字段。它是否正确? – 404error 2010-06-11 19:43:38

回答

41

您可以在导入期间为某些列设置MySQL值。如果您的id字段设置为自动递增,则可以在导入期间将其设置为空,然后MySQL将为其分配递增值。尝试把这样的事情在SQL标签在phpMyAdmin:

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

请看看这个网页,看看它是否有你是什么寻找。应该是你所需要的,因为你只需要处理一张桌子。 MYSQL LOAD DATA INFILE

因此,例如,你可能会做这样的事情:

LOAD DATA INFILE 'filepath' INTO TABLE 'tablename' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column2, column3, column4); 

这应该给你一个想法。当然还有更多的选项可以在上面的链接中看到。

+0

谢谢我会给这个去看看我是否可以弄明白。非常感谢。 – 404error 2010-06-11 20:05:38

4

一定要使用LOAD DATA LOCAL INFILE如果导入文件是本地的。 :)

+0

如果文件已经是本地文件,则不需要。使用LOCAL可能会引入其他问题,例如“错误1148(42000):这个MySQL版本不允许使用该命令”,不需要使用MySQL版本的不兼容性[关于此讨论](https://dev.mysql.com/doc/refman/5.0/en /loading-tables.html)。使用LOCAL可能需要检查附加设置,例如在标志的客户端和服务器端:local-infile。对我而言,它仍然无法工作。 – Katarzyna 2015-04-14 22:29:14