根据mysql中的输入文件自动创建表

时间:2012-02-06 12:43:28

标签: mysql

我有一个包含大量列的文件,我想在mysql表中输入这个文件。

问题是,如果我们有8个列的文件,那么我们将首先通过 -

创建表
CREATE TABLE `input` (
  `idInput` varchar(45) DEFAULT NULL,
  `row2` varchar(45) DEFAULT NULL,
  `col3` varchar(45) DEFAULT NULL,
  `col4` varchar(45) DEFAULT NULL,
  `col5` varchar(45) DEFAULT NULL,
  `col6` varchar(45) DEFAULT NULL,
  `col7` varchar(45) DEFAULT NULL,
  `col8` varchar(45) DEFAULT NULL
);

然后我们将通过 -

输入文件
LOAD DATA INFILE "FILE" INTO TABLE input;

但事实是,我有150列的文件,我想自动在mysql表中插入这个文件(所以我不应该先创建表)。我的文件的第一行是标题,它应该是表中的列名,每列和每行都有不同的数据类型。

那么有没有简单的方法可以做到这一点,之后我可以用这张桌子做不同的事情?

我正在使用mysql命令行客户端版本5.5.20(Windows 7)。

4 个答案:

答案 0 :(得分:2)

使用phpmyadmin。它能够在文件的第一行创建表格,并猜测表格结构。单击“导入”链接并选择您的文件。不要忘记选择格式以适合您的文件格式,主要是CSV。

如果文件太大而无法放入phpmyadmin,有时我会“抬头”文件并使用phpmyadmin中的头文件创建表格,然后使用LOAD DATA命令导入文件。

这让我的生活更轻松。

答案 1 :(得分:1)

您可以尝试使用SequelPro mysql客户端。

使用此工具,您可以使用“文件 - >导入”选项,并在“CSV导入字段映射”窗口中,而不是选择导入现有表格,您可以选择“新建”按钮。 / p>

如果您的CSV具有描述列名称的标题行,那么它会更好,因此它会提供正确的列名称。该工具还擅长根据内容猜测列的类型。

如果将VARCHAR(255)设置为文本类型字段的默认类型,则最终可能会遇到问题。如果是这种情况,请将这些字段的类型更改为TEXT类型。

答案 2 :(得分:0)

我认为这不可能使用直接MySQL。不知何故,必须猜测列定义。您将不得不使用第二语言来读出第一行,制作表格然后导入。

你可以使用mysqldump来做到这一点。

答案 3 :(得分:0)

据我了解,您有一个生成的文本文件,可以从命令行加载不同的数据类型。以下是MySQL的说明。

创建: https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html

改变: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

我也使用的所有命令行。 (如果有人有一个方便的视频,描述了如何使用其中一个MySQL开发人员环境的每一步,这可能有点好,一个不需要20个步骤来加载一个表,尽管总是可能是更快地手动输入一个并使用一步或编辑转储。)。