我有一个包含大量列的文件,我想在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)。
答案 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个步骤来加载一个表,尽管总是可能是更快地手动输入一个并使用一步或编辑转储。)。