我有这张桌子:
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,location),而CSV文件中只有一列,ID会自动递增。
如何将CSV导入到包含2列的表中,其中一列会自动递增?
答案 0 :(得分: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