mysql - 将 csv 导入 mysql workbench 时的列名要求

标签 mysql sql csv load-data-infile

我有以下代码将选定的列导入 mysql workbench。

    SET autocommit=0;
    LOAD DATA LOCAL INFILE '150926.csv' INTO TABLE innodb.fh  FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 1 lines
    (@dummy,date,@dummy,@dummy,@dummy,**CS-URI-STEM**,@dummy,@dummy,@dummy,c-ip,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy, session_id,@dummy,@dummy,@dummy);

    COMMIT;

问题是我的 csv 文件中有一个名为“CS-URI-STEM”的列,而我的代码无法正常工作。我只是想知道我是否需要更改我的 csv 文件中的列名称,因为它包含破折号。或者如果我需要更改代码,请告诉我。非常感谢!!!!!!

最佳答案

括号中的列名不是文件中的列名,它们是您要导入的表中的列名。如果您将其视为插入查询中的列名或值列表,则会令人困惑,因为它们的工作方式不同 - 此处您指定文件中的哪一列(按列表中的位置)进入表中的哪一列(按名称表中的列)。您必须忘记文件中的列名,因为它们根本不重要。

例如:给定一个像这样的 CSV 文件:

Row Number,Date,IP,Session,Whatever,Other columns...
1,2016-01-01,10.0.0.1,21312,"ABC",...
2,2016-01-02,10.0.0.2,21889,"XYZ",...

像这样的表格:

| session_id | ip_address | action_date | session_description |

导入的相应列名列表为:

(@dummy,action_date,ip_address,session_id,session_description,@dummy,@dummy,@dummy,...)

事实上,如果您只需要从第一列导入数据(即,如果您只需要前五列的数据但文件有 10 列,则您可以省略尾随虚拟变量)只能在导入列表中写入五列。)MySQL 将发出警告(#1262,“行 X 被截断;它包含的数据多于输入列”)但它会导入数据。

关于mysql - 将 csv 导入 mysql workbench 时的列名要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379848/

相关文章:

mysql - 如何使用终端进行 MySQL 备份和恢复?

php - 使用 PDO 将 polymer 数据绑定(bind)到 MySQL 表数据

mysql - 使用子查询从两个表中选择

python - 按行和列写入 csv

python - 如何使用 mysql 执行 sqlalchemy 脚本来创建数据库

javascript - 将 HTML DOM 值插入数据库

使用另一个表中的相同 ID 对列中的 SUM 值进行 SQL 查询

PHP 和 SQL - 数据库过载

python - 使用 Python 将 CSV 输出导出并映射到 MySQL 表

Powershell:查找 CSV 列中的任何值并将其替换为单个值