LOAD FILE,最后一行和列中输出错误

时间:2017-09-01 10:32:14

标签: mysql

这是sql文件

# mo.sql

DROP TABLE IF EXISTS mo;
#@ _CREATE_TABLE_
CREATE TABLE mo
(
  name CHAR(30),
  age INT,
  salary INT
);
#@ _CREATE_TABLE_

LOAD DATA LOCAL INFILE 'moja-2001.txt' INTO TABLE mo;

我从Linux终端

运行它
mysql -p cookbook < mo.sql

没有警告,没有错误。

SELECT * FROM mo;
+--------------------------+------+--------+
| name                     | age  | salary |
+--------------------------+------+--------+
| jova jovic               |   24 |   NULL |
| ceda prashak             |   25 |   NULL |
| toma grobar     28 20001 | NULL |   NULL |
+--------------------------+------+--------+

我使用geany文本编辑器

创建了txt文件
jova jovic      24 999
ceda prashak    25 1000
toma grobar     28 20001

为什么薪水栏错了?为什么第三排也错了?

1 个答案:

答案 0 :(得分:2)

最后一行不使用正确的值分隔符。我怀疑其他行使用制表符分隔值,最后一行使用空格。列salary也是如此。

确保对值使用相同的分隔符。最好使用逗号(它是可见的并且不易出错)并使用LOAD DATA语句的FIELDS TERMINATED BY子句来通知MySQL。

将文件更改为:

jova jovic,24,999
ceda prashak,25,1000
toma grobar,28,20001

并像这样导入:

LOAD DATA LOCAL INFILE 'moja-2001.txt' INTO TABLE mo FIELDS TERMINATED BY ',';

详细了解LOAD DATA statement