我一直在尝试将一个CSV
表上传到我的远程服务器数据库中,但我发现了一个错误。我MySQL
在 RedHat Linux 发行版中使用。我的 mycsv.csv 文件如下所示:
aa,ProductDescription,country,potato,L,11/18/2013,N,05
bb,ProductDescription,country,tomato,L,12/31/9999,N,05
cc,ProductDescription,country,curry,M,01/01/2014,Y,05
dd,ProductDescription,country,spicy,V,05/01/2015,N,
Run Code Online (Sandbox Code Playgroud)
如您所见,最后一行以逗号“,”结尾,没有任何字段(它是空的,应该是这样的,如果我可以将其更改为 NULL,则更好)。但是,当我键入以下查询时:
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
Run Code Online (Sandbox Code Playgroud)
我在命令行中收到以下错误
错误代码:1366。不正确的整数值:“product_life_cycle”列的第 4 行
有人知道如何在最后一行的逗号后设置空值吗?(我认为这是我无法上传表格的问题)。非常感谢您提前。
表定义:
CREATE TABLE master_data
( aa varchar(6) NOT NULL,
bb varchar(50) NOT NULL,
cc varchar(3) NOT NULL,
dd varchar(2) NOT NULL,
ee varchar(1) DEFAULT NULL,
ff varchar(20) NOT NULL,
gg varchar(1) NOT NULL,
hh int(11) DEFAULT NULL,
PRIMARY KEY (aa),
UNIQUE KEY aa_UNIQUE (aa)
) ENGINE=InnoDB
DEFAULT CHARSET=latin1 ;
Run Code Online (Sandbox Code Playgroud)
要设置,NULL
您只需要您的表允许空值。
如果您想在出现空值/缺失值的情况下将其更改为某个默认值,则需要指定各个列名称,如下所示:
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(name,proddescr,country,thing,charA,datecol,charB,@VAL)
set numberCol=if(@VAL is null, 0, @VAL);
Run Code Online (Sandbox Code Playgroud)
您可以将该 0 更改为任何其他默认值。
这篇博文还有许多其他有趣的负载数据场景,您可能想了解。(也通过评论)。
归档时间: |
|
查看次数: |
23774 次 |
最近记录: |