我有一个带有导出表的 CSV 文件,其中包含不包含值的字段的行。列使用“,”分隔,如果字段没有值,它们看起来像这样:,,,,,, 我尝试使用以下代码加载数据:
LOAD DATA INFILE "C:/table.csv"
INTO TABLE target_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
Run Code Online (Sandbox Code Playgroud)
目标表中的列(要加载此 CSV 文件中的数据)可以为空,但服务器返回错误:
"Incorrect integer value"
Run Code Online (Sandbox Code Playgroud)
当我在 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)
Run Code Online (Sandbox Code Playgroud)
检查语法以LOAD DATA
获取更多详细信息。
归档时间: |
|
查看次数: |
26946 次 |
最近记录: |