日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

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

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

主要控件:

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; //數(shù)據(jù)庫名稱

EdtUser: TEdit; //用戶名

EdtPass: TEdit; //口令

Button1: TButton; //執(zhí)行按鈕

//常量

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';

在執(zhí)行前先進行Oracle和SQL Server數(shù)據(jù)庫的連接。

連接Oracle:

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

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

try

ADOConnOrcale.Open;

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

Except

MsgBox('Oracle數(shù)據(jù)庫連接失??!');

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數(shù)據(jù)庫連接成功!')

except

MsgBox('SQL Server數(shù)據(jù)庫連接失??!');

end;

主要執(zhí)行代碼,比較亂,沒有整理,不過實現(xiàn)功能就行了。

procedure TForm1.Button1Click(Sender: TObject);

var

i:Integer;

FieldN, tableN, fieldM,aa:String;

begin

if Not ADOConnOrcale.Connected then

begin

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

exit;

end;

if not ADOConnSQLServer.Connected then

begin

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

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;

//是當前表,循環(huán)讀取主鍵信息

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;

日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国内精品亚洲| 欧美亚洲自偷自偷| 国产精品一区三区在线观看| 一区二区三区国产盗摄| 亚洲另类黄色| 国产欧美日韩一区二区三区在线| 国产精品亚洲综合久久| 精品一区二区三区中文字幕视频| 国内不卡的一区二区三区中文字幕| 国产精品网站在线看| 美女视频一区在线观看| 狠狠久久伊人| 欧美日韩国产免费观看视频| 中文精品电影| 久久爱www.| 香蕉久久99| 中文字幕亚洲精品乱码| 国产激情欧美| 伊人精品一区| 亚洲麻豆一区| 电影91久久久| 日韩中文字幕亚洲一区二区va在线 | 日本不良网站在线观看| 群体交乱之放荡娇妻一区二区| 亚洲女同一区| 国产亚洲久久| 日韩欧美看国产| 亚洲人成亚洲精品| 欧美在线精品一区| 在线日韩中文| 亚洲综合五月| 国产欧美日韩一区二区三区在线| 韩国精品主播一区二区在线观看| 男女男精品视频网| 中文字幕中文字幕精品| 精品三级在线| 日韩中文欧美在线| 国产一区二区色噜噜| 西西人体一区二区| 久久精品国产久精国产| 今天的高清视频免费播放成人| 91精品丝袜国产高跟在线| 国产传媒在线| 日韩毛片网站| 99久久激情| 国产精品久久久久久模特| 欧美jjzz| 韩国一区二区三区视频| 亚洲三级视频| 国产自产自拍视频在线观看| 亚洲天堂日韩在线| 欧美日韩国产高清电影| 精品国产99| 欧美中文高清| 亚洲一区二区小说| 欧美一区三区| 精品美女在线视频| 亚洲2区在线| 亚洲性色av| 老牛国内精品亚洲成av人片| 亚洲日韩视频| 久久午夜影视| 在线日韩中文| 天堂av在线| 国产欧美日韩精品一区二区免费| 免播放器亚洲| 在线日韩欧美| 日韩在线高清| 国产精品99久久精品| 国产精品亚洲欧美| 日韩av不卡一区二区| 久久成人一区| 欧美特黄一级| 日本国产精品| 日韩精品专区| 精品久久精品| 麻豆高清免费国产一区| 国产免费久久| 日韩激情精品| 99亚洲视频| 一区在线视频观看| 婷婷六月综合| 国产一区日韩一区| 久久久精品午夜少妇| 高清不卡亚洲| 人在线成免费视频| 日韩伦理福利| 成人午夜精品| 91精品蜜臀一区二区三区在线 | 亚洲永久精品唐人导航网址| 国产一级久久| 婷婷国产精品| 欧美日韩国产传媒| 国产一区成人| 日本欧美在线| 国产欧美在线| 国产精品一国产精品| 国产精品白丝久久av网站| 欧美午夜网站| 欧美自拍一区| 国产中文字幕一区二区三区| 成人亚洲一区二区| 日韩欧美一区免费| 国产欧美二区| 国产精品综合色区在线观看| 国产精品密蕾丝视频下载| 亚洲欧美日韩一区在线观看| 亚洲在线网站| 亚洲精品第一| 国产精品亚洲综合在线观看| 久久只有精品| 日韩不卡免费高清视频| 亚洲福利精品| 日韩一级网站| 亚州国产精品| 国产精品xxx| 国产一区二区三区探花| 日韩欧美国产精品综合嫩v| 99久久99久久精品国产片果冰| 亚洲欧美久久久| 91精品一区| 精品久久网站| 欧美日韩日本国产亚洲在线| 亚洲精品中文字幕99999| 国产欧美视频在线| 免费在线小视频| 午夜在线播放视频欧美| 国产一精品一av一免费爽爽| 精品国产中文字幕第一页 | 免费看av不卡| 日韩一区精品字幕| 国产精品久久久久久久久久白浆 | 国产综合色区在线观看| 欧美大黑bbbbbbbbb在线| 中文字幕中文字幕精品| 国产极品模特精品一二| 成人日韩在线观看| 亚洲男女自偷自拍| 国产精品nxnn| 久久国产小视频| 日韩精品免费观看视频| 成人亚洲精品| 丝袜脚交一区二区| 日本国产一区| 久久裸体视频| 日韩av一区二区三区四区| 日韩黄色大片| 日韩三区四区| 蜜桃视频在线网站| 色狠狠一区二区三区| 天堂av在线| 91精品国产自产在线丝袜啪| 偷拍精品精品一区二区三区| 在线观看一区| 欧美日韩免费观看视频| 日韩精品高清不卡| 99精品网站| 久久久精品国产**网站| 亚洲性图久久| 久久精品天堂| 综合亚洲视频| 国产精品99一区二区| 美女精品视频在线| 国产精品88久久久久久| 久久99国产精品视频| 中文视频一区| 精品一区三区| 国产成人精品亚洲线观看| 综合一区在线| 亚洲网站视频| 蜜臀国产一区| 麻豆国产一区| 日本午夜精品一区二区三区电影 | 蜜臀久久99精品久久久久久9| 成人国产精品一区二区免费麻豆| 亚洲人成精品久久久| 91精品国产自产在线观看永久∴ | 国产精品igao视频网网址不卡日韩| 亚洲激情二区| av综合电影网站| 国产亚洲欧美日韩精品一区二区三区 | 国产精品久久久久蜜臀| 在线亚洲精品| 日韩毛片视频| 日本午夜大片a在线观看| 麻豆91精品视频| 国产伦乱精品| 日韩国产欧美在线播放| 久久亚洲二区| 欧美在线资源| 精品视频一区二区三区在线观看 | 天堂√中文最新版在线| 麻豆久久一区二区| 国产精品久久久久久久久久久久久久久 | 亚洲精品国产精品粉嫩| 久久精品免费一区二区三区 | 久久精品国产亚洲夜色av网站 | 亚洲一级少妇| 国产欧洲在线| 超碰99在线|