如何将具有 1 列文件的 CSV 导入具有 2 列的 DB 表?
Posted
技术标签:
【中文标题】如何将具有 1 列文件的 CSV 导入具有 2 列的 DB 表?【英文标题】:How to import CSV with 1 column file to DB table with 2 columns? 【发布时间】:2018-08-29 17:19:04 【问题描述】:我有这张桌子:
CREATE TABLE `search`.`location` (
`id` INT NOT NULL AUTO_INCREMENT ,
`location` VARCHAR CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
我有一个 CSV 文件,其中有一列包含一些城市:
New York
Boston
Las Vegas
..
当我尝试将该文件导入表时,我收到此错误:
Invalid column count in CSV input on line 1.
我认为那是因为我在表中有 2 列(id、位置),而 CSV 文件中只有一列,ID 是自动递增的。
如何将 CSV 导入该表,其中 2 列自动递增?
【问题讨论】:
显示您用于重要表的代码。 @GordonLinoff,我不使用SQL导入,我使用手动导入方式 什么是“手动导入方式”? @JNevill ,从 phpmyadmin 有一个用于导入文件的部分 How to import text file to table with primary key as auto-increment的可能重复 【参考方案1】:您可以定义一个列列表来指定 csv 包含的列,并且(可选)将任何其他列设置为 csv 文件之外的值。
在您的 LOAD DATA INFILE 语句的末尾添加一个列列表来定义列 location
您应该加载的数据。您可以选择将 id
设置为 NULL 以自动增加值,但无论如何它都会这样做。
(`location`)
SET `id` = NULL;
这是一个有效的例子:
mysql> CREATE TABLE `location` (
`id` INT NOT NULL AUTO_INCREMENT,
`location` VARCHAR(32) NOT NULL,
PRIMARY KEY (`id`)
);
mysql> LOAD DATA INFILE '/var/lib/mysql-files/idtest.csv'
INTO TABLE`location`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(location)
SET id = NULL;
Query OK, 4 rows affected (0.17 sec)
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from `location`;
+----+----------+
| id | location |
+----+----------+
| 1 | "London" |
| 2 | "Paris" |
| 3 | "Rome" |
| 4 | "Berlin" |
+----+----------+
4 rows in set (0.00 sec)
文档here
【讨论】:
以上是关于如何将具有 1 列文件的 CSV 导入具有 2 列的 DB 表?的主要内容,如果未能解决你的问题,请参考以下文章