我們將oracle資料被同步到sqlserver時間,早餐在sqlserver表中的端構造。
我們是不同步的複雜領域,只考慮以下四種資料型別。
oracle到sqlserver做的對映:
int -> int
number -> decimal(18,6)
number(p,s) -> decimal(p,s)
date -> datetime
varchar2(n) -> nvarchar(n)
以下是從oracle端執行的plsql指令碼。
/*簡單介紹:從oracle拉出在mssql建表的指令碼。這是用plsql語言寫成的,在oracle中執行的指令碼。
例如以下是取出bom屬主下的非暫時表。
最後更新日期:20140515
*//*
oracle到sqlserver做的對映:
int -> int
number -> decimal(18,6)
number(p,s) -> decimal(p,s)
date -> datetime
varchar2(n) -> nvarchar(n)
*/declare
v_column_name varchar2(30);
v_data_type varchar2(106);
v_data_length number;
v_data_precision number;
v_data_scale number;
v_cnt int;
begin
for i in (
select 'ggmgr' as owner, 't6' as table_name from dual union
select 'ggmgr' as owner, 't2' as table_name from dual union
select 'ggmgr' as owner, 't6' as table_name from dual
) loop
dbms_output.put_line('create table '||'erp'||'.'||'dbo.'||i.table_name||'(');
select count(*)
into v_cnt
from dba_tab_columns
where table_name = i.table_name
and owner = i.owner;
for b in 1 .. v_cnt loop
select column_name,
data_type,
data_length,
data_precision,
data_scale
into v_column_name,
v_data_type,
v_data_length,
v_data_precision,
v_data_scale
from dba_tab_columns t
where table_name = i.table_name
and owner = i.owner
and column_id = b;
--int
if v_data_type = 'number' and v_data_precision is null and b != v_cnt then
dbms_output.put_line(v_column_name||' decimal'||',');
end if;
if v_data_type = 'number' and v_data_precision is null and b = v_cnt then
dbms_output.put_line(v_column_name||' decimal');
end if;
--number
if (v_data_type = 'number') and (v_data_precision is not null) and (b != v_cnt) then
dbms_output.put_line(v_column_name||' decimal'||'('||v_data_precision||','||v_data_scale||'),');
end if;
if (v_data_type = 'number') and (v_data_precision is not null) and (b = v_cnt) then
dbms_output.put_line(v_column_name||' decimal'||'('||v_data_precision||','||v_data_scale||')');
end if;
--varchar2
if (v_data_type = 'varchar2') and (v_data_length is not null) and (b != v_cnt) then
dbms_output.put_line(v_column_name||' nvarchar'||'('||v_data_length||'),');
end if;
if (v_data_type = 'varchar2') and (v_data_length is not null) and (b = v_cnt) then
dbms_output.put_line(v_column_name||' nvarchar'||'('||v_data_length||')');
end if;
--date
if (v_data_type = 'date') and (b != v_cnt) then
dbms_output.put_line(v_column_name||' datetime,');
end if;
if (v_data_type = 'date') and (b = v_cnt) then
dbms_output.put_line(v_column_name||' datetime');
end if;
--不屬於int,number,date,varchar2
if (v_column_name != 'number') and (v_column_name != 'date') and (v_column_name != 'varchar2') then
null;
end if;
end loop;
dbms_output.put_line(');'||chr(10));
end loop;
end;
GG配置Oracle同步到SQLServer
gg配置oracle同步到sqlserver 源端目標端準備一張測試用的表。oracle源端 drop table ggmgr.t1 create table ggmgr.t1 id int primary key,name varchar2 50 time date sqlserver目標端 be...
資料庫連線池 Oracle和SQL Server
近期看到許多朋友在問資料庫連線池的問題,所以特地總結了一下.以下是oracle和sql server在配置連線池時的區別 1.oracle與sql server在配置連線池時的區別 tomcat配置檔案中 oracle的配置方法 urljdbc oracle thin 172.28.122.49 1...
ISA SERVER日誌存放SQL SERVER中
在預設安裝 isa 2004 或是2006後,將會自動安裝簡易版的 sql server 來存放防火牆與 webproxy 的連線訪問日誌 可是由於 msde 僅限於單機連線的使用 並且在訪問上也有容量大小的限制 因此為了提公升整體 isa 的執行能力 建議可以改由將這些頻繁的日誌檔案訪問 寫入到內...