0

我有一个充满像这样的值的文本文件:

第一行是这样的列名列表:

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(由于大量数据,我猜测它会崩溃)

请帮忙!

4

3 回答 3

0

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

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

最通用的数据类型必须是VARCHARTEXT用于更大的值,但是当用于数字、日期等时,你当然会失去语义。

于 2012-05-14T04:01:57.460 回答
0

我注意到您包含了 phpmyadmin 标记。

PHPMyAdmin 可以开箱即用地处理这个问题。它将“神奇地”决定制作每一列的类型,并CREATE为您提供表格以及INSERT所有数据。无需担心LOAD DATA FROM INFILE,但如果您想在不依赖 PHPMyAdmin 的神奇工具的情况下确切知道发生了什么,该方法会更安全。

于 2012-05-14T04:11:10.833 回答
0

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

于 2013-12-16T19:08:21.540 回答