首页 > 语言 > 关键词  > 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;

举报

  • 相关推荐
  • 国内独家AI+操作系统TencentOS Server亮相2025中国国际金融展

    腾讯云TencentOS+Server历经15年技术积累,打造了国内独家AI+操作系统,已在农业银行、招商银行等金融机构核心系统落地应用。该系统具备性能提升、安全稳定等关键能力,支持国产CPU深度优化,实测性能提升9%-25%。其推出的TACO-LLM大模型推理加速器显著降低延迟,在金融信创生态实验室评测中获得权威认证。作为OpenCloudOS社区核心贡献者,TencentOS+Server已适配1697款硬件,覆盖四大架构,并孵化云原生OS"玄湾"等创新项目,成为国产操作系统规模化应用的标杆。

  • 腾讯云TencentOS Server AI,助力荣耀打造高性能AI底座

    随着生成式AI技术爆发式增长,AI大模型开始渗透至手机领域。荣耀基于腾讯云TencentOS Server AI的TACO-LLM加速模块部署DeepSeek-R1等开源大模型,在内部场景应用中实现稳定性、可靠性和推理性能的大幅提升。测试显示,使用TACO-LLM后,首Token延迟最高降低6.25倍,吞吐提升2倍,端到端延迟降低100%。TACO-LLM通过投机采样技术实现大模型"并行"解码,从根本上解决计算密度问题,大幅提升解码效率。荣耀表示该方案打造了高性能AI底座,提供高吞吐低延迟的优化方案,能无缝整合现有大模型部署方案。腾讯云TACO-LLM针对企业级AI模型私有化部署挑战,专门优化了大语言模型内核运行效率。

  • MCP server资源网站去哪找?国内MCP服务合集平台有哪些?

    在人工智能飞速发展的今天,AI模型与外部世界的交互变得愈发重要。一个好的工具不仅能提升开发效率,还能激发更多的创意。今天,我要给大家介绍一个宝藏平台——AIbase(<https://mcp.aibase.cn/>),一个专注于MCP(Model Context Protocol)服务的全球集合平台,它正在悄然改变AI应用开发的格局。 平台精心挑选了全球最受欢迎的MCP服务进行推荐。这些服务经过了市场的检验,具�

  • 首届央国企数智化与转型战略成果发布会在京召开,TencentOS Server展示应用成果

    6月26日,首届央国企数智化转型战略成果发布会在京举行,发布《央国企数智化发展研究报告》等重要成果。腾讯云受邀参会,其自研操作系统TencentOS Server凭借"西游四件套"等创新技术方案获得关注。该系统已实现超1000万套部署,支撑金融、政务等行业国产化需求,具备三大优势:1)性能提升方面,CPU利用率提升15-45%,整机能耗降低5-10%;2)技术创新方面,独创qGPU虚拟化技术可降低60%硬件成本;3)生态适配方面,已完成与国产主流硬件的互认证。目前该系统已助力农业银行等金融机构实现5%-25%性能提升,并成为金融、党政领域首选方案。作为国内三家具备Linux研发能力的厂商之一,腾讯云将持续打磨技术,支撑企业数字化转型需求。

  • MCP协议资源服务去哪找?国内MCP server资源网站推荐

    ​在人工智能技术飞速发展的今天,AI模型与外部工具和服务的交互需求日益增长。为了满足这一需求,一个名为 AIbase 的全球MCP服务器集合平台(https://mcp.aibase.cn/)应运而生,为开发者和企业提供了前所未有的便利和强大的功能支持。

  • 抓住人们对“Soulmate”的渴望,20天入账200万美金?

    6月17日,一款 AI 占星产品 Starla-Call the Universe 进入了 iOS 美国下载总榜前10,当笔者以为这又是一个昙花一现的产品时,它不仅能够持续坚守榜单 Top10长达半个月,而且到了6月24日,另一款产品 Astra-Life Advice 也进入了美榜前10,两款同类产品相继进入 Top10,并双双持续在榜超1周的时间。

  • 83岁老人现场开箱Pura 80:喜欢华为11年 收藏近200部华为手机

    日前,华为Pura 80系列正式发布,这是华为迄今最强的影像旗舰。 据媒体报道,Pura 80系列发布当天,洛阳一位叫宋茂信的老爷爷带着他收藏的9部华为P系列手机来到华为门店,现场开箱洛阳首台Pura 80样机。 宋爷爷表示,Pura 80系列最吸引人的就是一镜双目”,因为华为P系列拍照比较好,我一直喜欢拍照,我要入手一台。 据了解,83岁的宋爷爷是华为的忠实粉丝,喜欢华为已�

  • 边开直播边做实验,单场卖出2200万,小红书有了00后“一姐”

    “李嗲你真的…到底是谁想出来的这么抽象的测评方法?” 当00后的李嗲在直播间里打开UV相机摄像头进行测评防晒霜的时候,被紫外线灯照射的她和付铁寒立马在镜头下变成两个“小黑人”。这一场面引得无数年轻人一边大呼抽象,一边为这场眼见为实的实验买单。 在消费者的支持下,李嗲一路冲上小红书实时买手榜第一,成为小红书电商首个00后“一姐”。这样的成长速度

  • 女儿查分猛超陪考老爸200多分 查分时紧张到“磕巴”

    6月24日,河北一位父亲陪读女儿12年,与女儿一同参加了今年的高考。在高考成绩揭晓的那一刻,这位父亲紧张得说话都“磕巴”了,而女儿的分数却远超父亲200多分,让父亲感慨不已。 当高考成绩揭晓时,这位父亲紧张得手心都冒汗了。他坐在电脑前,一遍又一遍地刷新着查分页面,嘴里还不停地念叨着:“一定要考好啊,一定要考好啊。”而女儿则站在一旁,虽然也有些紧

  • BW2025即将开展,技嘉AORUS雕妹约你3H|3A08 雕宅见

    BilibiliWorld2025将于7月11-13日在上海国家会展中心举办,技嘉AORUS确认参展。现场将带来全新电竞装备体验、热门游戏试玩和1V1对战PK,还有萌妹互动环节。亮点包括:1)"竞速街潮痛车"主题展区,限量发售同款模型;2)首发雕妹国风定制整机,融合东方美学与电竞性能;3)二次元电竞乐园,包含宅舞派对等多元活动。7月8日将公布终极剧透,提前锁定3H|3A08展位,参与互动赢取大奖。这是今夏最燃的电竞狂欢,不见不散!