![](/img/trans.png)
[英]1366 incorrect integer value: error when importing data from csv into mysql
[英]Default value for empty integer fields when importing CSV data in MySQL
我正在使用LOAD DATA INFILE
將CSV導入MySQL表。 其中一個表的字段存儲了郵政編碼數據,我在表結構contributor_zipcode INT
定義了該數據。
在CSV中,此字段有時為空。 當我執行LOAD
查詢時,MySQL將發出如下警告:
Incorrect integer value: '' for column 'contributor_zipcode' at row 180
我已經嘗試將字段重新定義為contributor_zipcode INT DEFAULT '0'
,它創建相同的警告,並且contributor_zipcode INT DEFAULT NULL
,MySQL將不允許。 有什么建議?
空值被解釋為空字符串(''),而不是NULL,因此未使用默認值。
如果要顯式控制這些空字符串的處理,最好的做法是將它們加載到用戶變量中,然后使用用戶變量有條件地設置列。
您可以使用它將值設置為您想要的值(NULL,0等)。
這是一個示例,假設您要將其設置為0:
LOAD DATA INFILE '...'
INTO TABLE your_table
FIELDS TERMINATED BY ','
(column_one,..., @contributor_zipcode,..., column_n)
SET contributor_zipcode = IF(@contributor_zipcode='',0,@contributor_zipcode);
在Csv中,我在運行腳本之前用“\\ N”替換了所有“”,這在db中創建了一個空字段
對於某些元素(例如郵政編碼),默認值可能更好為null
,而不是0
。
假設你有一個人叫(還有什么)的表People
。
create table People (
id int,
first_name varchar(30),
last_name varchar(50),
city varchar(50),
state varchar(50),
zip int
);
接下來,將file.csv
加載到People
表中。 注意最后一行(以set
開頭)如果文件中的值為""
(也就是空字符串), set
zip
指定為null
load data local infile '/path/to/file.csv'
into table People
fields
terminated by ','
enclosed by '"'
lines terminated by '\n'
(id, first_name, last_name, city, state, @zip)
set zip = if(@zip='', null, @zip);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.