从表1复制数据到表2

tony2278 2013-09-26 10:44:21


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,除了上面的那种方法外,有没有其它的方法?
能不能不用读出每一条记录的每一项,用拼装的方式插入到另一张表中去?






...全文
207 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
无敌小二傻 2013-09-26
  • 打赏
  • 举报
回复
引用 5 楼 tony2278 的回复:
但数据源不一样,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'
tony2278 2013-09-26
  • 打赏
  • 举报
回复
但数据源不一样,Table1 在20130925.db里面,Table2 在20130926.db里面.
请叫我-雷人 2013-09-26
  • 打赏
  • 举报
回复
列一致的话直接 insert into Table2 select * from Table1 where statue = '2'
  • 打赏
  • 举报
回复
引用 1 楼 shiyiwan 的回复:
如果忽略权限控制,那么可以在目标数据库建立一个指向源数据库的dblink,在应用程序中使用insert into select from的方式。
1楼正解,直接用

   insert into table2(...) select ... from table1 where ...
无敌小二傻 2013-09-26
  • 打赏
  • 举报
回复
直接执行这句就可以了: insert into Table2(列名1,列名2)select 列名1,列名2 from Table1 where statue = '2'
shiyiwan 2013-09-26
  • 打赏
  • 举报
回复
如果忽略权限控制,那么可以在目标数据库建立一个指向源数据库的dblink,在应用程序中使用insert into select from的方式。
tony2278 2013-09-26
  • 打赏
  • 举报
回复
数据源不一样。是想通过合并一个数据量小一点的数据库来达到更新主数据库的目的。
  • 打赏
  • 举报
回复
2个库的数据源一样吗

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧