我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(由于数据量很大而导致我崩溃)
请帮忙!
答案 0 :(得分:0)
CSV文件中的数据未规范化;这600个列可能分布在几个相关的表中。这是处理这些数据的推荐方法。然后,您可以使用fgetcsv()
在PHP中逐行读取CSV文件。
要让MySQL处理CSV,你可以创建一个600列表(我认为)并发出LOAD DATA LOCAL INFILE
语句(或者可能使用mysqlimport
,但不确定。)
对于更大的值,最通用的数据类型必须是VARCHAR
或TEXT
,但当在数字,日期等上使用时,您当然会丢失语义。
答案 1 :(得分:0)
我注意到你包含了phpmyadmin标签。
PHPMyAdmin可以解决这个问题。它将“神奇地”决定每个列的类型,并CREATE
为您提供表格,以及INSERT
所有数据。没有必要担心LOAD DATA FROM INFILE
,但如果您想要在不依赖PHPMyAdmin的神奇工具的情况下确切了解正在发生的事情,那么该方法可以更安全。
答案 2 :(得分:0)
尝试convertcsvtomysql,只需上传您的csv文件,然后您就可以下载和/或复制mysql语句来创建表并插入行。