成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

實例講解Oracle到SQL Server主鍵的遷移

瀏覽:144日期:2023-11-28 18:29:11
這篇論壇文章(賽迪網技術社區)主要介紹了Oracle數據庫到SQL Server數據庫主鍵的遷移過程,具體內容請參考下文。

由于項目需要要將以前Oracle的數據庫轉化為SQL Server,今天利用SQL Server的DTD進行數據庫的遷移,但導入以后發現只導入了表結構和數據,而表的一些主鍵約束都沒導過來,感覺很郁悶,而手頭又沒有好的遷移工具,如Erwin,所以動手寫了個小工具,基本實現了主鍵的轉移,主要代碼如下:

主要控件:

ADOConnOrcale: TADOConnection; //連接Oracle

ADOConnSQLServer: TADOConnection; //連接SQL Server

O1: TADOQuery; //連接Oracle

S1: TADOQuery; //連接SQL Server

S2: TADOQuery; //連接SQL Server

ProgressBar1: TProgressBar; //進度條

Memo1: TMemo; //顯示出錯信息

EdtServer: TEdit; //服務器

EdtDataBase: TEdit; //數據庫名稱

EdtUser: TEdit; //用戶名

EdtPass: TEdit; //口令

Button1: TButton; //執行按鈕

//常量

const

ORAConnStr='Provider=MSDAORA.1;Data Source=%S;User ID=%S;Password=%S;Persist Security Info=True';

SQLConnStr='Provider=SQLOLEDB.1;Data Source=%S;Initial Catalog=%S;User ID=%S;Password=%S;Persist Security Info=False';

在執行前先進行Oracle和SQL Server數據庫的連接。

連接Oracle:

ADOConnOrcale.ConnectionString :=Format(ORAConnStr,[trim(EdtDataBase.Text),

trim(EdtUser.Text),trim(EdtPass.Text)]);

try

ADOConnOrcale.Open;

MsgBox('Oracle數據庫連接成功!');

Except

MsgBox('Oracle數據庫連接失敗!');

end;

連接SQL Server:

ADOConnSQLServer.ConnectionString :=Format(SQLConnStr,[trim(EdtServer.Text),

trim(EdtDataBase.Text),trim(EdtUser.Text),trim(EdtPass.Text)]);

try

ADOConnSQLServer.Open;

MsgBox('SQL Server數據庫連接成功!')

except

MsgBox('SQL Server數據庫連接失敗!');

end;

主要執行代碼,比較亂,沒有整理,不過實現功能就行了。

procedure TForm1.Button1Click(Sender: TObject);

var

i:Integer;

FieldN, tableN, fieldM,aa:String;

begin

if Not ADOConnOrcale.Connected then

begin

MsgBox('請先連接Oracle數據庫!');

exit;

end;

if not ADOConnSQLServer.Connected then

begin

MsgBox('請先連接SQL Server數據庫!');

exit;

end;

Screen.Cursor :=crHourGlass;

try

o1.Close;

O1.SQL.Clear;

//取oracle表用戶budget的所有主鍵約束信息

o1.SQL.Text :=' select a.CONSTRAINT_NAME,a.CONSTRAINT_TYPE,a.TABLE_NAME, b.COLUMN_NAME,b.position '+

' from USER_CONSTRAINTS a,USER_CONS_COLUMNS b where a.CONSTRAINT_NAME=b.CONSTRAINT_NAME '+

' and a.table_name=b.table_name and constraint_type=''P'' and a.owner=b.owner '+

' and lower(a.owner)=''budget'' order by a.table_name,b.position ';

O1.open;

tableN:='';

O1.First;

ProgressBar1.Max:=O1.RecordCount;

ProgressBar1.Min:=0;

ProgressBar1.Step:=1;

ProgressBar1.Visible :=true;

for i:=0 to O1.RecordCount -1 do

begin

s2.Close;

S2.SQL.Clear;

//判斷SQL Server表是否存在當前的字段信息

S2.SQL.Text:='SELECT a.name AS tanme, b.* FROM sysobjects a INNER JOIN '+

' syscolumns b ON a.id = b.id '+

' WHERE (a.xtype = ''U'') AND (a.name = '''+O1.fieldbyname('table_name').AsString+''''+

') and b.name= '''+O1.fieldbyname('COLUMN_NAME').AsString+''''+

' ORDER BY b.id';

S2.Open;

//不存在,輸出表明和字段名

if s2.RecordCount<=0 then

begin

Memo1.Text:=Memo1.Text+#13+'表:'''+O1.fieldbyname('table_name').AsString+''''+

' 字段:'''+O1.fieldbyname('COLUMN_NAME').AsString+''' 不存在!';

O1.Next;

tableN:='';

FieldN:='';

Continue;

end;

//是當前表,循環讀取主鍵信息

if (tableN='') or (tableN= O1.fieldbyname('table_name').AsString) then

begin

FieldN:=FieldN+'['+O1.fieldbyname('COLUMN_NAME').AsString+'],';//表明相同或初試時

tableN:= O1.fieldbyname('table_name').AsString;

end

else

begin

with S1 do

begin

try

//取SQL Server表的主鍵信息

Close;

sql.Clear;

sql.Text:='SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='''+tableN+'''';

Open;

first;

aa:=fieldbyname('constraint_name').AsString;

//如果該主鍵在SQL表中已存在,刪除該主鍵信息,重建該表主鍵

if recordcount>0 then

begin

sql.Clear;

SQL.Text:='ALTER TABLE '+tableN+' DROP CONSTRAINT '+aa; //刪除主鍵

ExecSQL;

end;

SQL.Clear; //COLUMN_NAME

SQL.Text:='ALTER TABLE '+tableN+' WITH NOCHECK ADD '+

' CONSTRAINT [PK_'+tableN+'] PRIMARY KEY NONCLUSTERED '+

' ( '+ copy(FieldN,1,length(FieldN)-1)+

' )';

ExecSQL;

FieldN:='['+O1.fieldbyname('COLUMN_NAME').AsString+'],';

tableN:= O1.fieldbyname('table_name').AsString;

Except

Memo1.Text :=Memo1.Text+'表: '+tableN+' 字段: '+FieldN+' 導入出錯!';

exit;

end;

end;

end;

ProgressBar1.StepIt;

Application.ProcessMessages;

O1.Next;

end;

MsgBox('導入完成!');

finally

Screen.Cursor :=crDefault;

ProgressBar1.Visible :=False;

end;

end;

標簽: Oracle 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久久久久黄色| 成人av资源网站| 国产性做久久久久久| 亚洲情趣在线观看| 久草这里只有精品视频| 午夜精品剧场| 亚洲一区国产一区| 日韩欧美精品在线视频| 一区二区三区四区不卡在线| 国产福利精品导航| 91久久国产综合久久蜜月精品 | 中文日韩在线| 狠狠色狠狠色综合系列| 精品91在线| 欧美性猛交xxxx黑人交| 中文字幕在线不卡一区二区三区| 麻豆精品久久精品色综合| 午夜亚洲福利| 久久精品亚洲精品国产欧美| 972aa.com艺术欧美| 色老综合老女人久久久| 亚洲国产精品精华液ab| 国产一区二区中文字幕| 国产精品免费看| 欧美一区二区在线看| 亚洲午夜成aⅴ人片| 99久久99久久免费精品蜜臀| 精品日韩在线观看| 日韩二区在线观看| 欧美国产先锋| 欧美精品自拍偷拍动漫精品| 综合自拍亚洲综合图不卡区| 成人国产一区二区三区精品| 日韩亚洲欧美中文三级| 三级不卡在线观看| 激情视频一区二区| 亚洲另类一区二区| av一区二区三区四区| 精品视频免费看| 亚洲愉拍自拍另类高清精品| 欧美福利专区| 亚洲女与黑人做爰| 99在线精品视频在线观看 | 亚洲综合色自拍一区| 国产精品乱子乱xxxx| 美日韩黄色大片| 欧美电影免费观看高清完整版在| 欧美99久久| 一区二区三区在线观看网站| 久久综合影视| 亚洲最色的网站| 裸体素人女欧美日韩| 亚洲欧洲精品天堂一级| 亚洲麻豆av| 青青草原综合久久大伊人精品| 日韩视频一区| 亚洲电影欧美电影有声小说| 亚洲国产专区| 亚洲电影激情视频网站| 69堂国产成人免费视频| 久国产精品韩国三级视频| 欧美tickle裸体挠脚心vk| 亚洲视频狠狠| 日韩精品乱码免费| 欧美v日韩v国产v| 亚洲高清在线| 18涩涩午夜精品.www| 久久精品二区三区| 国产成人精品一区二区三区四区| 国产精品激情偷乱一区二区∴| 亚洲欧美亚洲| 亚洲成人黄色小说| 日韩欧美亚洲一区二区| 亚洲高清不卡一区| 国内精品伊人久久久久影院对白| 中文天堂在线一区| 欧美久久久久久| 亚洲bdsm女犯bdsm网站| 精品免费国产一区二区三区四区| 亚洲看片一区| 国产成人免费在线观看不卡| 一区二区中文字幕在线| 欧美视频在线观看一区二区| 91视频你懂的| 国产拍揄自揄精品视频麻豆| 99国产精品久久久久久久久久| 亚洲麻豆国产自偷在线| 欧美喷潮久久久xxxxx| 精久久久久久久久久久| 久久精品夜色噜噜亚洲a∨| 久久久精彩视频| 99久久久久久99| 欧美在线三级电影| 韩国av一区二区三区在线观看| 国产欧美日韩视频一区二区| 久热综合在线亚洲精品| 欧美日本一区| 国产揄拍国内精品对白| 亚洲综合视频在线观看| 久久欧美中文字幕| 欧美三级一区二区| 亚洲美女色禁图| 成人午夜免费视频| 精品乱码亚洲一区二区不卡| 国产日韩欧美一区二区| 成人免费高清视频| 日本欧美一区二区三区| 成人免费在线视频观看| 91精品国产综合久久久久久漫画 | 欧美一级日韩免费不卡| 国产日韩欧美亚洲一区| 高清不卡在线观看| 久久夜色精品国产欧美乱极品| 91麻豆国产在线观看| 日韩成人精品视频| 亚洲日本欧美天堂| 久久先锋影音av鲁色资源| 91国产免费看| 亚洲黑丝一区二区| 不卡免费追剧大全电视剧网站| 午夜电影网亚洲视频| 欧美日韩精品一区二区| 在线观看一区视频| 成人午夜伦理影院| 久久精品国产精品亚洲精品 | 亚洲永久网站| 欧美激情视频一区二区三区免费| 韩国av一区二区| 五月开心婷婷久久| 亚洲日韩欧美一区二区在线| 久久天堂av综合合色蜜桃网| 91精品黄色片免费大全| 欧美专区在线观看一区| 亚洲欧美清纯在线制服| 亚洲成人福利片| 久久久久久久av麻豆果冻| 5月丁香婷婷综合| 色呦呦国产精品| 国模冰冰炮一区二区| 亚洲综合色噜噜狠狠| 欧美国产激情二区三区 | 欧美色精品天天在线观看视频| 亚洲欧美日韩一区在线观看| 国产综合视频| 日韩av不卡在线观看| 亚洲欧洲三级电影| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美日韩一二三区| 老司机精品久久| 国产亚洲一级| 亚洲国产二区| 欧美国产先锋| 99久久99久久免费精品蜜臀| 懂色av中文一区二区三区| 久久国产综合精品| 美脚の诱脚舐め脚责91| 天堂成人国产精品一区| 亚洲自拍都市欧美小说| 欧美午夜精品| 亚洲成人av一区二区三区| ㊣最新国产の精品bt伙计久久| 久久亚洲欧美国产精品乐播 | 中文字幕乱码亚洲精品一区 | 精品国产91乱码一区二区三区 | 26uuu久久天堂性欧美| 欧美一级精品大片| 欧美日韩激情一区| 欧美色倩网站大全免费| 色成年激情久久综合| 噜噜噜久久亚洲精品国产品小说| 一区二区三区三区在线| av成人天堂| 国产日韩一区二区三区| 国产伦理一区| 久久久夜夜夜| 91成人国产精品| 在线观看亚洲精品视频| 在线区一区二视频| 欧美日韩视频第一区| 欧美一区二区三区免费大片| 在线不卡中文字幕| 91麻豆精品国产91久久久久久久久 | 久久久福利视频| 午夜在线精品| 色网综合在线观看| 欧美网站一区二区| 91精品在线观看入口| 精品福利二区三区| 中日韩av电影| 亚洲裸体在线观看| 亚洲影视在线观看| 日韩精品福利网| 狠狠久久亚洲欧美| 成人午夜激情影院| 欧美freesex交免费视频| 韩国亚洲精品| 国产日韩三区| 欧美午夜寂寞影院| 日韩精品一区二区三区在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av |