这是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
文本编辑器
jova jovic 24 999
ceda prashak 25 1000
toma grobar 28 20001
为什么薪水栏错了?为什么第三排也错了?
答案 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。