如何实现每天自动从ORACLE中取表名是动态的数据 用诸如PB之类的程序使用两个事务,分别连接ORACLE和SQL SERVER,然后根据不同的表名取相关数据,从一个数据库导入另外一个数据库. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题是zg.acc_bill_079320080402的表名是动态生成的,比如今天是20080403,那么zg.acc_bill_079320080403是不存在的,要等到20080404才会删除zg.acc_bill_079320080402表再生成zg.acc_bill_079320080403 这个也不是难事,只要你的规则定下来就行了sql2005里面的ssis可以用变量来读取源数据的,只要按照你的规则来就可以抽取相应的表的数据了 我用的是sql2000,有没有详细的操作方法呢 2000里面我没研究过 不知道能不能动态写sql语句来读取源数据的?这个只好你自己看一下了,2000我手头也没有 现在在ORACLE有一张表,表名是按日期来命名的 zg.acc_bill_079320080402,我现在想每天自动从ORACLE按日期通过DTS包导入数据,比如:今天是20080403,我就导入zg.acc_bill_079320080402的数据,到了明天就自动导入zg.acc_bill_079320080403的数据,请问有实现的可能吗?--------------------------------------------那我问你,今天是4月3号,你今天要取哪个表?zg.acc_bill_079320080402今天的日期减一不就得到zg.acc_bill_079320080402表了?select tbname = 'zg.acc_bill_0793' + convert(varchar(8),dateadd(dd,-1,getdate()),112)/*tbname ------------------------ zg.acc_bill_079320080402(所影响的行数为 1 行)*/所以说,这是个逻辑问题. 问题是怎么用在DTS包中呢,用CONVERT好像不行,在ORACLE用trunc(sysdate-1)就可以了吧 DTS包中的语句应该是ORACLE语句吧,这里取的只是一个tb_name的值。如果要在ORACLE中用到select * from zg.acc_bill_079320080403的表,这个怎么取? 思路: 取得动态表名的数据---》插入目的表名 (不同DB间可以用 database link)参考如下代码: 1 declare 2 type empcurtype is ref cursor; 3 emp_cur empcurtype; 4 emp_record emp%rowtype; 5 sql_stat varchar2(200); 6 begin 7 sql_stat:='select * from emp where deptno=:dno'; ----动态表名 8 open emp_cur for sql_stat using &dno; 9 loop 10 fetch emp_cur into emp_record; ----插入目的表 11 exit when emp_cur%notfound; 12 dbms_output.put_line('Employee:'||emp_record.ename||',salary:'||emp_record.sal); 13 end loop; 14* end;SQL> / SQL怎么汇总多个字段 SQL Server中的VIA服务 如何得到update后,影响的行数? navy887 exec xp_cmdshell 服务器: 消息 2812,级别 16,状态 62,行 1 未能找到存储过程 'xp_cmdshell'。 我在win2000下启动ms sql数据库 打开数据表返回所有行的时候,报没有注册类别。。。 求助查询区分大小写问题 在线急救 连接查询与JOIN语句 问一条简单的SQL语句,大家来看看 模糊查询特殊符号匹配的问题 用WINDOWS验证的SQL EXPRESS怎么无法发布? 成為一名.NET熟手要多長時間啊.好累啊....
sql2005里面的ssis可以用变量来读取源数据的,只要按照你的规则来就可以抽取相应的表的数据了
这个只好你自己看一下了,2000我手头也没有
现在在ORACLE有一张表,表名是按日期来命名的 zg.acc_bill_079320080402,我现在想每天自动从ORACLE按日期通过DTS包导入数据,比如:今天是20080403,我就导入zg.acc_bill_079320080402的数据,到了明天就自动导入zg.acc_bill_079320080403的数据,请问有实现的可能吗?
--------------------------------------------
那我问你,今天是4月3号,你今天要取哪个表?zg.acc_bill_079320080402今天的日期减一不就得到zg.acc_bill_079320080402表了?select tbname = 'zg.acc_bill_0793' + convert(varchar(8),dateadd(dd,-1,getdate()),112)/*
tbname
------------------------
zg.acc_bill_079320080402(所影响的行数为 1 行)
*/所以说,这是个逻辑问题.
如果要在ORACLE中用到select * from zg.acc_bill_079320080403的表,这个怎么取?
取得动态表名的数据---》插入目的表名 (不同DB间可以用 database link)参考如下代码:
1 declare
2 type empcurtype is ref cursor;
3 emp_cur empcurtype;
4 emp_record emp%rowtype;
5 sql_stat varchar2(200);
6 begin
7 sql_stat:='select * from emp where deptno=:dno'; ----动态表名
8 open emp_cur for sql_stat using &dno;
9 loop
10 fetch emp_cur into emp_record; ----插入目的表
11 exit when emp_cur%notfound;
12 dbms_output.put_line('Employee:'||emp_record.ename||',salary:'||emp_record.sal);
13 end loop;
14* end;
SQL> /