首批通过分布式安全可靠测评,为关键业务系统打造
使用 Load Data Infile 导入外部数据文件时遇到报错 ERROR 1292 (22007): Incorrect value 的原因和解决方法
更新时间:2026-05-28 02:06
问题现象
使用Load Data命令导入外部数据文件时,遇到如下的报错:

### 使用命令如下:
obclient [test]> load data infile '/data/date.csv' into table sales_data fields terminated by ',';
ERROR 1292 (22007): Incorrect value
问题原因
### sales_data 表结构如下,包含时间类型
CREATE TABLE sales_data (
transaction_id INT PRIMARY KEY,
product VARCHAR(100),
amount DECIMAL(10,2),
sale_date DATE
) WITH COLUMN GROUP(each column);
### 数据文件如下
[root@ob54 data]# cat date1.csv
1004, 'Product A', 299.99, '2023-01-15'
1005, 'Product B', 199.50, '2023-02-20'
1006, 'Product C', 499.00, '2023-03-10'
### 截取部分导入报错日志如下
INFO open (ob_file.cpp:55) [3202431][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=26] open fname=[/data/date.csv] fd=890 flags=0 succ
INFO [SERVER.OMT] add_thread_to_cgroup_ (ob_cgroup_ctrl.cpp:523) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=18] add tid to cgroup success(group_path="cgroup//tenant_1014//OBCG_DEFAULT", tid_value="3202460", tenant_id=1014, group_id=0)
WDIAG [LIB.TIME] str_to_ob_time_with_date (ob_time_convert.cpp:2518) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=34][errcode=-4158] failed to get digits(ret=-4158, str='2023-01-15')
WDIAG [LIB.TIME] str_to_mdate (ob_time_convert.cpp:929) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=23][errcode=-4158] failed to convert string to date(ret=-4158)
WDIAG [SQL] common_string_mdate (ob_datum_cast.cpp:1224) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=-4158] str_to_date failed(ret=-4158, in_str='2023-01-15')
WDIAG [SQL] string_mdate (ob_datum_cast.cpp:4399) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=8][errcode=-4158] fail to exec common_string_mdate(expr, ObString(child_res->len_, child_res->ptr_), res_datum)(ret=-4158)
WDIAG [SQL] to_type (ob_datum_cast.cpp:18862) [3202460][T1014_L0_G0][T1014][xxxxx-xxxxx-xxxxx-xxxxx] [lt=141][errcode=-4158] eval cast expr failed(ret=-4158)
### 根据上述日志报错得知字符串转换为日期失败
因为时间类型数据在 CSV 文件中被单引号包围,导致转换错误
适用版本
OceanBase 数据库 V4.x 版本。
解决方法
检查 CSV 数据文件的内容和表结构,确保字段类型一致。
使用 Load Data Infile 命令导入数据文件时,缺省的列分隔符为
\t(TAB键),列界定符为空,行分隔符为\n。因此对于使用单引号包裹的日期时间类型的数据,需要在导入命令中添加上列界定符enclosed by "\'"选项。
修改后的导入命令示例
### 导入成功
obclient [test]> load data infile '/data/date.csv' into table sales_data fields terminated by ',' enclosed by "\'";
Query OK, 3 rows affected (0.009 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0