如何知道在使用 DAT 文件向 table 插入条目时导致约束失败的原因?
How to know what causes constraint failure during inserting enrties to a table using a DAT file?
我正在使用 DAT 文件将多个条目插入 table。我如何知道哪些记录导致约束失败(例如重复约束)?我正在使用 informix dbaccess 加载条目。
这是我如何加载它的示例代码:
load from 'table.dat'
insert into table (
col1,
col2,
col3
);
这是我遇到的错误。它显示了 sql 代码失败的位置,但没有告诉我具体哪一行失败。
268: Unique constraint (test.tableconstraint) violated.
100: ISAM error: duplicate value for a record with unique key.
Error in line 1
Near character position 0
您有两个选择:
使用 DB-Load (dbload
) 而不是 DB-Access 加载数据。
DBLOAD Load Utility INFORMIX-SQL Version 12.10.FC6
Usage:
dbload [-d dbname] [-c cfilname] [-l logfile] [-e errnum] [-n nnum]
[-i inum] [-s] [-p] [-r | -k] [-X]
-d database name
-c command file name
-l bad row(s) log file
-e bad row(s) # before abort
-s syntax error check only
-n # of row(s) before commit
-p prompt to commit or not on abort
-i # of row(s) to ignore before starting
-r loading without locking table
-X recognize HEX escapes in character fields
-k loading with exclusive lock on table(s)
使用START VIOLATIONS TABLE and STOP VIOLATIONS TABLE。这将在一个 table 中记录违反约束的数据,并在另一个中给出诊断信息。如果愿意,您可以指定辅助 table 名称,但默认为带有后缀 _vio
和 _dia
.
[=27 的基本 table 名称=]
两者都试一试——我怀疑违规 table 是更好的选择,但两者都有效。
我正在使用 DAT 文件将多个条目插入 table。我如何知道哪些记录导致约束失败(例如重复约束)?我正在使用 informix dbaccess 加载条目。
这是我如何加载它的示例代码:
load from 'table.dat'
insert into table (
col1,
col2,
col3
);
这是我遇到的错误。它显示了 sql 代码失败的位置,但没有告诉我具体哪一行失败。
268: Unique constraint (test.tableconstraint) violated.
100: ISAM error: duplicate value for a record with unique key.
Error in line 1
Near character position 0
您有两个选择:
使用 DB-Load (
dbload
) 而不是 DB-Access 加载数据。DBLOAD Load Utility INFORMIX-SQL Version 12.10.FC6 Usage: dbload [-d dbname] [-c cfilname] [-l logfile] [-e errnum] [-n nnum] [-i inum] [-s] [-p] [-r | -k] [-X] -d database name -c command file name -l bad row(s) log file -e bad row(s) # before abort -s syntax error check only -n # of row(s) before commit -p prompt to commit or not on abort -i # of row(s) to ignore before starting -r loading without locking table -X recognize HEX escapes in character fields -k loading with exclusive lock on table(s)
使用START VIOLATIONS TABLE and STOP VIOLATIONS TABLE。这将在一个 table 中记录违反约束的数据,并在另一个中给出诊断信息。如果愿意,您可以指定辅助 table 名称,但默认为带有后缀
[=27 的基本 table 名称=]_vio
和_dia
.
两者都试一试——我怀疑违规 table 是更好的选择,但两者都有效。