首页 > 语言 > 关键词  > SQL最新资讯  > 正文

SQL SQL Server 2008中的新日期数据类型

2009-03-10 15:06 · 稿源:IT专家网

这篇文章主要介绍了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;

  • 相关推荐
  • 大家在看
  • CCF CTO Club(深圳)第二站活动在云天励飞圆满举行

    9 月 28 日,CCF CTO Club(深圳)第二站活动来到云天励飞,CCF CTO CLUB(深圳)主席李世鹏、副主席田奇、常委乐中英,CCF深圳分部副主席谢全锋等近 30 位特邀嘉宾出席,云天励飞首席科学家王孝宇主持了会议。CCF CTO CLUB(深圳)主席李世鹏CCF CTO CLUB(深圳)副主席田奇云天励飞首席科学家王孝宇会议上,港中大深高金、政策与实践研究所所长、香港国际金融学会主席肖耿以“深港合作:一体化还是双体系并行”为主题发表讲话。?

  • SCRM取代CRM,凭什么?

    随着时代的进程,再加上疫情的因素,CRM系统在企业客户管理需求上的实用价值逐渐弱化,在诸多方面显得力不从心。于是SCRM系统横空出世,正在快速取代CRM系统的行业地位,并延伸出更多营销增长价值。SCRM系统的出现,其实是立足于中国移动社交平台的规模、用户粘性、功能深度,而SCRM系统的兴起,也给予了企业营销更多的可能性。在大多数非专业人士看来,SCRM只是在CRM的基础上增加了“social ”,升级为更具社会化属性、更具社交价

  • 法大大荣获SAP SuccessFactors “黑科技”大奖

    10月11日,SAP举办了“因需而聚,因创立新”为主题的 SAP SuccessFactors 合作伙伴应用创新大赛2021云端颁奖典礼,法大大凭借领先的技术优势、产品和团队优势,在本次大赛中脱颖而出,荣获“黑科技”大奖,SAP SuccessFactors 员工体验管理大中华区总经理草野拓哉先生参与颁奖。通过合作创新,双方可助力更多的企业全面实现合同签约及管理数字化。△法大大荣获“黑科技”大奖本次大赛围绕 SAP SuccessFactors 为核心平台,基于 SAP

  • 小米Poco M4出现在FCC上,发布日期可能很近

    一种新的Poco设备出现在最近的FCC文件中,从外观上看,它就是即将推出的Poco M4。当然,正如FCC列表中通常出现的情况一样,这一条并没有透露太多关于手机的信息,但它确实给了我们一些谜题。Poco M4 Pro将推出两种内存变体—4GB/64GB和8GB/128GB,并支持5G和NFC。不出所料,这款手机将在小米最新的MIUI12.5平台上运行。我们无法从FCC文件中提取任何其他信息,因此我们所能做的只是等待,看看小米是否会在保留激进定价的同时带来一?

  • Realme印度和欧洲的CEO现在也成为南美CEO

    自从Realme作为OPPO的子品牌运营以来,甚至在它作为独立公司分拆出来之后,Madhav Sheth就一直掌管着Realme印度和欧洲的事务。

  • 喜茶联合CCFA制定新茶饮标准

    近年来,新茶饮市场规模增长显着,未来仍有数百亿的市场空间有待渗透。随着行业的快速发展,新茶饮行业迫切需要一个统一的标准。作为新茶饮行业的先行者,喜茶积极承担推动行业标准化的责任,近日宣布将与中国连锁经营协会(CCFA)新茶饮委员会共同制定新式现制茶饮的团体标准。事实上,喜茶一直在有意识地推动行业规范的发展。参与制定了国家标准《外卖餐品信息描述规范》、北京市《餐饮服务单位布局流程设置规范》、长沙市《餐饮

  • Facebook Connectivity推出可加速光纤部署的机器人

    为了实现“帮助十亿人用上更快的互联网”的目标,Facebook Connectivity 正在积极开发各种新技术,其中就包括了一款名叫 Bombyx 的机器人。据悉,Bombyx 能够在通常需要耗费较多时间的场景下,更快地完成光缆的安装部署。此外还有一项名叫 Terragraph 的无线技术,以满足光缆难以抵达的“最后一英里”的客户需求。早些时候,Facebook 介绍了名为2Africa Pearls 的新海底光缆项目,旨在更好地连接欧亚非地区的互联网。Facebook 首席

  • Oakley携手Roccat推出全新限量款PC电竞眼镜

    在 2021 年 1 月的成功合作之后,业内领先的游戏配件品牌 Turtle Beach 与运动性能和光学创新领域领导者 Oakley,现又联手推出了限量版的 PC 电竞眼镜产品线。Oakley 表示,其致力于持续为寻求更高性能的玩家群体开发游戏眼镜。当与 Roccat 新款 PC 电竞耳机搭配使用时,新产品组合将帮助他们看得更清楚、听得也更清晰,从而在游戏中占据先机。兼容产品中包括了功能强大的无线 Syn Pro Air 和 Elo 系列耳机,特点是结合了 Turtle B

  • 聚焦设计与影像!小米魏思琪谈Civi:CC的脱胎换骨全面进化

    今日,小米手机官方正式公布了小米手机全新系列Xiaomi Civi,主打时尚多元的设计和创新的影像科技,新品将于9月27日正式发布。随后,小米CC系列产品经理@Cici_老魏 (魏思琪)通过微博解答了网友部分问题。对于Xiaomi Civi是什么的问题,魏思琪表示,Xiaomi Civi是小米手机全新的潮流系列,配以时尚多元的设计和创新的影像科技。那么全新系列和CC有什么关系?魏思琪称,有关系,又好像没关系。专为年轻人打造潮流手机,Civi可以说?

  • Check Point:线上社交如何反欺诈?

    近期,全球领先网络安全解决方案提供商 Check Point? 软件技术有限公司(纳斯达克股票代码:CHKP)旗下威胁情报部门 Check Point Research 的研究人员发现并帮助修补了 OkCupid 网站和移动应用中的几个重大漏洞 — OkCupid 是全球领先的免费在线婚恋交友平台之一,拥有来自全球110 个国家和地区的超过5000 万注册用户。这些漏洞如果不加以解决,网络犯罪分子可能就会趁机访问和窃取平台用户的个人敏感信息,并在用户不知情的情况下

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天