将CSV文件导入mysql。 (特别是关于create table命令)

时间:2012-05-14 03:56:01

标签: mysql csv phpmyadmin load-data-infile create-table

我hava文本文件中充满了这样的值:

第一行是列名,如下所示:

col_name_1, col_name_2, col_name_3 ......(600 columns)

以及以下所有列都具有以下值:

1101,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1101,1,3.86,65,0.46418,65,0.57151...

将此导入mysql的最佳方法是什么?

具体如何提出正确的CREATE TABLE命令,以便数据正确加载?什么是最好的通用数据类型,它将采用所有上述值,如1101或3.86或0.57151。我并不担心该表在存储方面效率低下,因为我需要一次使用它。

我在其他相关问题中尝试过一些建议,例如使用Phpmyadmin(由于数据量很大而导致我崩溃)

请帮忙!

3 个答案:

答案 0 :(得分:0)

CSV文件中的数据未规范化;这600个列可能分布在几个相关的表中。这是处理这些数据的推荐方法。然后,您可以使用fgetcsv()在PHP中逐行读取CSV文件。

要让MySQL处理CSV,你可以创建一个600列表(我认为)并发出LOAD DATA LOCAL INFILE语句(或者可能使用mysqlimport,但不确定。)

对于更大的值,最通用的数据类型必须是VARCHARTEXT,但当在数字,日期等上使用时,您当然会丢失语义。

答案 1 :(得分:0)

我注意到你包含了phpmyadmin标签。

PHPMyAdmin可以解决这个问题。它将“神奇地”决定每个列的类型,并CREATE为您提供表格,以及INSERT所有数据。没有必要担心LOAD DATA FROM INFILE,但如果您想要在不依赖PHPMyAdmin的神奇工具的情况下确切了解正在发生的事情,那么该方法可以更安全。

答案 2 :(得分:0)

尝试convertcsvtomysql,只需上传您的csv文件,然后您就可以下载和/或复制mysql语句来创建表并插入行。