你的意思是将数据记录转换成一条条的 insert 语句?
db2 是没有这样的功能的。需要自己开发。
但貌似可以通过自定义存储过程的方式来实现。这也算是个思路吧。之前google到国外有人通过存储过程实现了,并有例程,但当时由于版本问题,本人没有实现。
create or replace procedure gen_insert_sql
begin
declare v_columns1 varchar(5000);
declare v_columns2 varchar(5000);
declare v_sql varchar(20000);
for x1 as c1 cursor for
select tabschema,tabname
from syscat.tables
where type='T' and owner='DB2INST1'
and tabname='T_TEST1'
do
for x11 as c11 cursor for
select colname
from syscat.columns
where tabschema=x1.tabschema and tabname=x1.tabname and generated=''
do
set v_columns1='';
if v_columns1=''
then
set v_columns1=x11.colname;
else
set v_columns1=v_columns1||','||x11.colname;
end if;
set v_columns2='';
if v_columns2=''
then
set v_columns2=chr(39)||x11.colname||chr(39);
else
set v_columns2=v_columns2||','||chr(39)||x11.colname||chr(39);
end if;
set v_sql=
'export to ''c:\'||trim(x1.tabschema)||'.'||trim(x1.tabname)||'.sql'' of del'||chr(13)||chr(10)
||'modified by nochardel'||chr(13)||chr(10)
||'select ''insert into '||trim(x1.tabschema)||'.'||trim(x1.tabname)||'('||v_columns1||') values (''||'||v_columns2||'||'')''||''@'''||chr(13)||chr(10)
||'from '||trim(x1.tabschema)||'.'||trim(x1.tabname);
call sysproc.admin_cmd(v_sql);
end for;
end for;
end@