【发布时间】:2016-07-08 09:29:52
【问题描述】:
数据:
1|\N|"First\Line"
2|\N|"Second\Line"
3|100|\N
\N 在 MYSQL 和 MariaDB 中代表 NULL。
我正在尝试使用LOAD DATA LOCAL INFILE 方法将上述数据加载到名为 ID_OPR 的表中。
表结构:
CREATE TABLE ID_OPR (
idnt decimal(4),
age decimal(3),
comment varchar(100)
);
我的代码如下所示:
LOAD DATA LOCAL INFILE <DATA FILE LOCATION> INTO TABLE <TABLE_NAME> FIELDS TERMINATED BY '|' ESCAPED BY '' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n';
此代码的问题是它中止并出现错误Incorrect decimal value: '\\N' For column <Column name>。
问题:
如何在第二个十进制列中使用NULL 值加载此数据,并且不会从第三个字符串列中丢失\(Backslash)?
我正在尝试这是 MariaDB,它在大多数情况下类似于 Mysql。
更新: 我提到的错误看起来像一个警告,数据实际上正在加载到表中。但这里的问题在于文本数据。
例如:如果上面的第三条记录作为 \N 本身加载到字符串列中。但我希望它为 NULL。
有没有办法让软件识别这个空值?像 oracle 中的解码之类的东西?
【问题讨论】:
-
十进制字段是否设置为接受空值?它是否默认设置为null?此外,您应该能够使用另一个反斜杠转义反斜杠:“First\\Line”
-
是的,十进制字段可以接受空值 - 默认设置为空。不允许手动修改数据或使用代码。这些记录必须使用通用脚本进行处理。
-
请从转储中发布几行真实的行
-
@e4c5:真实数据中没有比上面提供的数据。由于我无法将作品提取到公共网站,因此我将其屏蔽并以简单文本“First\Line”的形式提及。
-
FIrst\Line没有意义。\L应该是什么意思?