mySQL 命令行导入 CSV 给我 NULL

标签 mysql csv

我习惯使用 PHPmyadmin 来管理我的 mySQL 数据库,但我开始更多地使用命令行。我正在尝试将 CSV 文件导入到名为 source_data 的表中,如下所示...

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| code      | varchar(10) | YES  |     | NULL    |                |
| result    | char(1)     | YES  |     | NULL    |                |
| source    | char(1)     | YES  |     | NULL    |                |
| timestamp | varchar(30) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

我的 CSV 文件看起来像这样......

code,result,source,timestamp
123 ABC,,,
456 DEF,,,
789 GHI,,,
234 JKL,,,
567 MNO,,,
890 PQR,,,

我正在使用这个命令..

LOAD DATA INFILE '/home/user1/data.csv' INTO TABLE source_data FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

这会插入正确数量的行,但每一行都显示 NULL,我哪里出错了?

最佳答案

由于 CSV 文件不包含所有表格列(它缺少 id 列),您需要明确指定应写入的列。

LOAD DATA INFILE '/home/user1/data.csv' 
INTO TABLE source_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 ROWS
(code, result, source, timestamp);

关于mySQL 命令行导入 CSV 给我 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35903206/

相关文章:

mysql - 两个 double 值之间的 SQL 查询

mysql 根据时间间隔获取日期时间的所有间隔

javascript - 在 Node.js 中使用 JS Promise 进行多个 mysql 调用

ruby - 以 4 为增量迭代 Ruby 数组

c++ - 将字符串 vector 连接到 std::ostream(如 boost::join)

python - 使用 Python 连接 CSV 中的行

php - 如何通过中间表在从一个模型到另一个模型中使用 Eloquent

mysql - 快速选择后续记录 block

c# - 各地区的数制问题

excel - 阻止 Excel 将字符串转换为数字