【问题标题】:How to import CSV with 1 column file to DB table with 2 columns?如何将具有 1 列文件的 CSV 导入具有 2 列的 DB 表?
【发布时间】: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 列自动递增?

【问题讨论】:

标签: mysql sql csv phpmyadmin


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-03
    • 2015-07-23
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多