欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

从表一复制数据到表2

更新时间: 2014-01-05 02:14:38 责任编辑: Author_N1

 

从表1复制数据到表2


char buf1[256];
char buf2[256];

//打开源数据库
db.open( DBSourcePath );

//打开目标数据库
db2.open( DBTargetPath );


//开始合并
memset( buf1, 0, sizeof( buf1 ) );
memset( buf2, 0, sizeof( buf2 ) );
strcpy( buf1, "select * from Table1 where statue = '2';" );
Query q = db.execQuery( buf1 );
while( !q.eof() )
{
for(int i=0;i<8;i++) //Table1每条记录有8个项
{
Field[i] = q.fieldValue(i); //获取每一项的数据


q.nextRow();
sprintf( buf2, "insert into Table2 values  ('%s','%s','%s','%s','%s','%s','%s', '%s');",Field[0], Field[1], Field[2], Field[3], Field[4], Field[5], Field[6], Field[7] ); //拼装数据
db2.execDML( buf2 ); //插入数据到表2
}    

//合并结束
db.close();
db2.close();



相当于添加表1的数据到表2,除了上面的那种方法外,有没有其它的方法?
能不能不用读出每一条记录的每一项,用拼装的方式插入到另一张表中去?







--参考方法--
如果忽略权限控制,那么可以在目标数据库建立一个指向源数据库的dblink,在应用程序中使用insert into select from的方式。
--参考方法--
直接执行这句就可以了:
insert into Table2(列名1,列名2)select 列名1,列名2 from Table1 where statue = '2'
--参考方法--
引用:
如果忽略权限控制,那么可以在目标数据库建立一个指向源数据库的dblink,在应用程序中使用insert into select from的方式。
 1楼正解,直接用

   insert into table2(...) select ... from table1 where ...

--参考方法--
列一致的话直接
insert into Table2
select * from Table1 where statue = '2'
--参考方法--
引用:
但数据源不一样,Table1 在20130925.db里面,Table2 在20130926.db里面.


在20130925.db下创建一个dblink指向20130926.db
然后在执行
insert into Table2(列名1,列名2)select 列名1,列名2 from Table1@dblink名称 where statue = '2' 
--参考方法--
2个库的数据源一样吗
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:38
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7446/
本文WWW.DOC100.NET DOC100.NET版权所有。