Mysql
導入帶有空欄位的 CSV 時出現 MySQL 錯誤
我有帶有導出表的 CSV 文件,其中包含不包含值的欄位的行。列使用“,”分隔,如果欄位沒有值,它們看起來像這樣:,,,,,,我嘗試使用以下程式碼載入數據:
LOAD DATA INFILE "C:/table.csv" INTO TABLE target_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS
目標表中的列(將載入此 CSV 文件中的數據)可以為空,但伺服器返回錯誤:
"Incorrect integer value"
當我在 CSV 文件中的逗號之間放置 NULL 時,伺服器不會返回任何錯誤。是否可以在不更改 CSV 文件的情況下更改某些設置以載入表格?
像這樣檢查’‘的每個值,然後插入 NULL 可能會有所幫助。將 a,b,c,d 更改為表格上的實際名稱和行數:
$ cat /tmp/test.csv test1, test2, test3, test4 ,,, 1,2,3,4 ,,, mysql> LOAD DATA INFILE "/tmp/test.csv" INTO TABLE test.test FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS (@a, @b, @c, @d) SET a = IF(@a = '', NULL, @a), b = IF(@b = '', NULL, @b), c = IF(@c = '', NULL, @c), d = IF(@d = '', NULL, @d); Query OK, 3 rows affected (0.00 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 mysql> SELECT * FROM test.test; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | NULL | NULL | NULL | NULL | | 1 | 2 | 3 | 4 | | NULL | NULL | NULL | NULL | +------+------+------+------+ 3 rows in set (0.00 sec)
檢查語法以
LOAD DATA
獲取更多詳細資訊。