我正在使用DAT文件将多个条目插入到表中。我怎么知道什么记录导致约束失败(例如重复约束)?我正在使用notifyix 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
答案 0 :(得分:3)
您有两种选择:
使用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和STOP VIOLATIONS TABLE。这会将违反约束的数据记录在一个表中,并在另一表中提供诊断信息。您可以根据需要指定辅助表名称,但是默认名称是带有后缀_vio
和_dia
的基本表名称。
两者都尝试-我怀疑违反表是更好的选择,但是两者都可以。