mysqlimport NULL значения при импорте из файла с разделителями - PullRequest
0 голосов
/ 27 ноября 2018

Я запускаю mysqlimport для загрузки данных, и у меня возникла проблема с пустыми значениями, которые не загружаются как нуль.Я использую mysql 5.7.23

Проблема может быть воссоздана путем создания файла с именем mytable.psv, содержащего:

code|date_a|date_b
1|2018-11-27|2018-11-27
2|2018-11-27|

Затем выполните команды:

mysql -u root -e "CREATE DATABASE mydb"
mysql -u root -e "USE mydb; CREATE TABLE mytable (code varchar(15) NOT NULL, date_a date NOT NULL, date_b date);"
mysqlimport --ignore-lines=1 --fields-terminated-by='|' --columns="code,date_a,date_b" --local -u root mydb mytable.psv
mysql -u root -e "USE mydb; SELECT * FROM mytable;"

Вывод:

mydb.mytable: Records: 2  Deleted: 0  Skipped: 0  Warnings: 1
+------+------------+------------+
| code | date_a     | date_b     |
+------+------------+------------+
| 1    | 2018-11-27 | 2018-11-27 |
| 2    | 2018-11-27 | 0000-00-00 |
+------+------------+------------+

Вы можете видеть, что date_b для второй строки пуста, и мне нужно, чтобы это было нулевым, но вместо этого оно превращается в 0000-00-00.Это ломает ограничения, которые мне нужны в дальнейшем.Есть ли способ гарантировать, что пустые значения будут нулевыми при импорте данных из файла с разделителями?

1 Ответ

0 голосов
/ 03 декабря 2018

Мне удалось найти ответы здесь: https://dev.mysql.com/doc/refman/8.0/en/mysqlimport.html#option_mysqlimport_lines-terminated-by https://dev.mysql.com/doc/refman/8.0/en/load-data.html Вам нужны символы '\ N', чтобы импортировать ноль, поэтому в приведенном выше примере это будет:

code|date_a|date_b
1|2018-11-27|2018-11-27
2|2018-11-27|\N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...