从带有标题的 CSV 文件创建表格

use*_*602 15 mysql bulk import csv

我正在寻找一种方法来仅根据指定 CSV 的内容生成新的 MySQL 表。我将使用的 CSV 文件具有以下属性;

  • “|” 定界。
  • 第一行指定列名(标题),也是“|” 定界。
  • 列名和顺序不固定。
  • 列数不固定。
  • 文件很大(100 万行/50 列)。

在 Excel 中,这一切都相当简单,但是在 MySQL 中似乎并非如此(Google 运气不佳)。关于我应该看什么的任何建议?

Fra*_*urt 13

您可以使用csvsql,它是csvkit(一组用于转换和处理 CSV 文件的实用程序)的一部分:

  • Linux 或 Mac OS X
  • 免费和开源
  • sudo pip install csvkit
  • 例子: csvsql --dialect mysql --snifflimit 100000 datatwithheaders.csv > mytabledef.sql
  • CREATE TABLE根据文件内容创建一个语句。列名取自 CSV 文件的第一行。

要在扩大ivansabik答案使用pandas,请参阅如何插入大熊猫数据帧通过MySQLdb的导入数据库?.


Ric*_*mes 0

您需要根据各个列的数据类型、大小等生成一个 CREATE TABLE。

然后使用 LOAD DATA INFILE ... FIELDS TERMINATED BY '|' 以“\n”结尾的行跳过 1 行...;(有关详细信息,请参阅手册页。)

对每个 csv --> 表执行同样的操作。