如何将ms sql server 2000中的大量数据导入sybase数据库中!马上给分!

Carlson Wang 2002-10-22 02:20:07
包括所有的表结构和表中的数据。
如何处理字段类型的问题?
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
奇遇 2002-10-27
  • 打赏
  • 举报
回复
Maybe help u.


//数据管道:数据转储的一件利器

在数据库应用日益广泛的今天,数据转储是一个不可缺少的功能。比如,当前的数据要按月或季结转到历史库中,或异地数据库中的数据要转入信息中心的服务器中,或者单位的不同数据库管理系统(例如SQL Server)中的数据要导入到另一个数据库中(如Sybase),这些都需要做数据转储工作。

实现数据转储的途径有很多,主要的数据库管理系统和开发工具基本都提供完成这一功能的方法,所以开发者选择的余地较大。笔者在使用PowerBuilder的实践中深刻体会到PowerBuilder 的数据管道是实现数据转储的一个较好方法。自PowerBuilder 4.0之后, PowerBuilder增加了数据管道功能,它的最大特点是使用方便、可靠性高,这对工程项目来说是至关重要的。

数据管道通常用来传递一个或多个表中的部分或全部数据,它会使不同数据库之间复制数据变得更容易。通过数据管道能传递一个表中所选取的数据,也能通过数据管道来传递多表连接中所选取的数据,还能通过数据管道来传递视图对应的数据。当传递数据时,源数据库中的数据仍留在原数据库中,所传数据被复制进目的数据库中的一个新的或已有的表中。在使用数据管道时,源和目的数据库可以是同一个数据库,也可以是不同的,甚至可以属于不同类型的数据库管理系统。

数据管道对象的建立

要使用数据管道对象,必须先定义。创建数据管道对象要使用数据管道画笔,它包括新建数据管道对象或打开已存在的数据管道对象、保存数据管道对象、数据管道连接配置、选择目的数据库、编辑SQL数据源、执行数据管道对象和退出数据管道等。使用数据管道画笔创建数据管道对象,必须定义源数据库、目的数据库、源表和要从这些表中检索的数据、目的表。当有了这些内容后,就可以创建数据管道对象了。

我们以一个卷烟营销管理系统的中转库管理子系统中的台账为例讲述数据管道的创建过程。

Pipe_tz是为将Sybase系统中的KCGULI9T表中数据结转到Sybase中的历史库KCGUL29T表而定义的一个数据管道对象,两张表的结构相同,均含有卷烟代码、卷烟名称、出入库性质、出入库时间、出入库数量、仓库代码、仓管员等字段。

首先在PowerBar中点击数据管道画笔,出现选取数据管道对话框,在对话框中点击New按钮生成新的数据管道对象,在新数据管道对话框出现后,选定源数据库、目的数据库初始文件和数据源的选取方式,由于我们所要结转的数据都来自KCGULI9T一张表,所以选取Quick select方式就可以,随后点击OK按钮,如果要结转的数据来源于几张基表,就必须选取SQL select方式。这与PowerBuilder中创建数据窗口的选取方式一样。

在弹出的Quick select对话框中,用鼠标选定KCGULI9T表中需要结转的字段,然后点击OK按钮,出现数据管道画笔的工作区,在工作区中修改数据管道的定义。如何修改数据管道的定义,依赖于开发者所选择的操作方式、目的数据库管理系统和所要完成的任务。

此例中目的表选择KCGUL29T,数据管道对象Pipe_tz定义为将数据传输并替换追加到KCGUL29T表中。

操作方式选择“Updata_Insert Rows”,也可以选择“Append_Insert Rows”方式,两种记录虽然都具有追加方式的功能,但采用“Updata_Insert Rows”方式,除了具有“Append”的功能外,如果数据源做了修改,还可以将修改后的数据再传回到目的库中,更新原有的数据,以保障两个库中数据的一致性。

提交方式选择100。启动数据管道后,从源数据库读100条记录,向目的数据库写100条记录,然后提交;重复这个过程,直至要结转的数据全部复制完。这样定义的好处在于配合条件语句使用,当一次结转没有完全成功时,纠正错误后再做结转,传输过程不必从头开始,可以从失败的那100条记录开始。如果是异地数据传输,建议不要采用这种方式,以避免反复读取时占用网络资源。

最大错误行选1。当运行中有一行错误,就中止数据管道的运行。

在应用中调用数据管道

数据管道对象定义好后就可以运行了。运行数据管道对象可采用两种方法,一种是在数据管道画笔中执行定义好的数据管道对象,另一种方法是在应用中调用数据管道。前一种方法多用于检验和调试数据管道,而第二种方法真正用于程序中。下面主要介绍在应用中使用数据管道的方法。

在应用中执行数据管道,除了前面创建的数据管道外,还需建立数据管道类用户对象,这主要是为弥补数据管道对象不含属性、事件、函数的不足。按照实际需要,开发者可能要建立若干条数据管道对象,但数据管道类用户对象只需创建一个。创建过程如下:

首先在PowerBar上点取用户对象按钮,弹出Select User Object对话框,单击对话框中New按钮,又弹出New User Object对话框,选择Standard Class用户对象并单击OK按钮,此时显示Select Standard Class Type对话框,选择系统Pipeline对象并单击OK按钮,对所定义的用户对象做所需的修改工作,比如定义变量、做初始化工作。

在pipemeter事件下写入:
pipe_status_read.text=string(rowsread)
pipe_status_written.text=string(rowswritten)
pipe_status_error.text=string(rowserror)
在constructor事件下写入:
pipe_status_read=create statictext
pipe_status_written = create statictext
pipe_status_error = create statictext
在destructor事件下写入:
destroy pipe_status_read
destroy pipe_status_written
destroy pipe_status_error
在Instance Variables 中定义三个静态变量:
Statictext pipe_status_read,&
pipe_status_written,&
pipe_status_error


最后保存已定义好的用户对象,我们定义其为uso_pipe_tz。

建立控制数据管道对象的窗口

利用数据管道对象传输数据时,要通过窗口为数据管道提供与用户交互的界面,用户使用窗口中的控件来操纵数据管道的运行。可以按照自己的想法来设计此窗口,一般要在窗口中放置命令按钮(例如启动、中止)、静态文本控件(显示读、写、出错的行数)、数据窗口控件(例如dw_2,显示源表、目的表的错误行,此数据窗口控件不必连接任何基表,但绝对不能省略)。我们建立的控制数据管道对象窗口的名称为w_jz。

当建好控制数据管道运行的窗口后,在应用中使用数据管道所需的基本对象就都准备就绪了。接下来要做的是应用的初始化工作。

应用中需做的初始化和结束性工作

在前面建立数据管道类对象时,我们已将该对象的初始化工作做完了。下面主要介绍控制数据管道运行窗口的初始化工作和结束性工作。

首先要定义两个事务对象与源及目的数据库相连接,最好制作一个(当源及目的数据库相同)或两个(当源及目的数据库不同)指定数据库的初始化INI文件,我们的INI文件为zzk.ini。制作方法与制作PowerBuilder应用对象时连接数据库的INI文件方法完全一样。然后为控制数据管道运行窗口定义三个实例变量:

定义类型为uso_pipe_tz的实例变量: uso_pipe_tz pipe;

定义类型为transaction两个实例变量: itrans _source,itrans_destination。

接下来要进行的工作是在控制数据管道运行窗口Open事件写入下面的程序:
Itrans_source=create transaction
Itrans_source.DBMS = ProfileString(“zzk.ini”, “Database”, “DBMS”,“”)
Itrans_source.Database = ProfileString(“zzk.ini”,“Database”, “DataBase”, “”)
Itrans_source.LogID = ProfileString(“zzk.ini”, “Database”, “LogID”,“”)
Itrans_source.LogPass = ProfileString(“zzk.ini”, “Database”, “LogPassword”, “”)
Itrans_source.ServerName = ProfileString(“zzk.ini”, “Database”, “UserID”, “”)
Itrans_source.UserID = ProfileString(“zzk.ini”,“Database”,“DBMS”, “”)
Itrans_source.DBPass = ProfileString(“zzk.ini”, “Database”,“DatabasePassword”, “”)
Itrans_source.Lock = ProfileString(“zzk.ini”, “Database”,“Lock”,“”)
Itrans_source.DbParm = ProfileString(“zzk.ini”, “Database”, “DbParm”, “”)
Connect using itrans_source;
//与源数据库连接
Itrans_destination=create transaction
Itrans_ destination.DBMS = ProfileString(“zzk.ini”,“Database”,“DBMS”,“”)
Itrans_ destination.Database = ProfileString(“zzk.ini”,“Database”,“DataBase”,“”)
Itrans_ destination.LogID = ProfileString(“zzk.ini”,“Database”,“LogID”,“”)
Itrans_ destination.LogPass = ProfileString(“zzk.ini”,“Database”,“LogPassword”,“”)
Itrans_ destination.ServerName = ProfileString(“zzk.ini”,“Database”,“UserID”,“”)
Itrans_ destination.UserID = ProfileString(“zzk.ini”,“Database”,“DBMS”,“”)
Itrans_ destination.DBPass = ProfileString(“zzk.ini”,“Database”,“DatabasePassword”,“”)
Itrans_ destination.Lock = ProfileString(“zzk.ini”,“Database”,“Lock”,“”)
Itrans_ destination.DbParm = ProfileString(“zzk.ini”,“Database”,“DbParm”,“”)
Connect using itrans_ destination;
//与目的数据库连接
pipe=CREATE uso_pipe_tz
//创建一个用户自定义对象的实例。


以上是控制数据管道运行窗口的初始化和与自定义类用户对象连接的工作,下面是控制数据管道运行窗口的结束性工作。

在控制数据管道运行窗口close事件写入下面的程序:
DESTROY pipe //删除用户对象实例
DISCONNECT USING itrans_source;
//断开源数据库
IF itrans_source.SQLCode=-1 then
Beep(1)
MessageBox(“数据库连接失败”,“问题发生在与源数据库断开时!”,EXCLAMATION!)
END IF
DESTROY itrans_source
//删除指向源数据库的事务对象实例
DISCONNECT USING itrans_destination;
//
奇遇 2002-10-25
  • 打赏
  • 举报
回复
What pity are u!
U can study them by some book or online help.
They are not difficult.

Play a joke on u :)
What tools do u can use? Please list them
We can select some can do what you want ^_^
Carlson Wang 2002-10-25
  • 打赏
  • 举报
回复
PB的数据管道怎么用啊??
POWERDESIGNER我也没用过:(
tiger7403 2002-10-23
  • 打赏
  • 举报
回复
用pb的数据管道
charryli 2002-10-23
  • 打赏
  • 举报
回复
关注!!!!我也遇到了这个问题!!!
xiaotubie 2002-10-23
  • 打赏
  • 举报
回复
第一步:使用powerdesingner反向工程得到sqlserver2000中的数据库模型
第二步:将到得的这个数据模型改为sybase 11的
第三步:使用这个模型将表、主外键等导入到sybase数据库中
第四步:使用sqlserver的“所有任务”-“导出数据”,第二步目标类型要选sybase,然后可以把表中的数据灌到sybase中,

有问题可发邮件:yuyaning@mail.china.com
记住给分噢
BDB是跨数据平台的数据设计和自动安装工具、支持Oracle、MS SQLServer、Access、MySQLSQLAnyWhere、Sybase数据。通过BDB可以快速建立数据模型、并随时与实体数据进行双向同步。同时它还可以为您的应用程序创建数据自动安装(或自动升级)程序、以及实现不同数据平台间数据迁移等。此外、在BDB提供了对开发语言的支持、其数据结构定义文件采用XML标准格式、并且开放了外部读取数据结构的源程序(C#/Delphi/JAVA)、您可以通过使用BDB来简化软件开发和部署过程:1、数据设计、自动安装:支持和数据之间的正向和反向工程。既可以通过BDB进行新的数据设计,自动创建或更新至实体数据、也可导出现有数据结构,并为其创建数据自动安装程序。2、跨数据平台:只需按熟悉的数据平台进行一次定义,就可在上述各个数据平台进行数据自动安装和任意迁移。系统会自动进行语法、数据类型转换。3、数据迁移:在不同数据平台间进行数据结构(包括数据表、索引、约束、视图和存储过程对象)和数据迁移。4、查询析、数据表查询、数据编辑功能。提供专用的SQL编辑器、支持SQL语法高亮、快速脚本输入、脚本预定义等。5、预输出创建、更新SQL脚本。6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。7、对开发语言的支持。开放的数据物理结构文件格式、并提供外部调用源程序,包含C#、Delphi、JAVA三个版本。8、数据物理结构定义和实体数据之间的比对更新、同步。9、可为可重用属性创建数据字典定义、并进行同步。10、采用方案定义、支持多个工程模式。11、提供自定义功能、可以根据需要扩展数据结构定义文件。12、支持多语言(目前版本语言:/英文)。并提供了新的语言定义的说明、可根据需要增加新的语言支持。website: www.bainsoft.com
BDB是跨数据平台的数据设计和自动安装工具、
支持Oracle、MS SQLServer、Access、MySQLSQLAnyWhere、Sybase数据
通过BDB可以快速建立数据模型、并随时与实体数据进行双向同步。
同时它还可以为您的应用程序创建数据自动安装(或自动升级)程序、
以及实现不同数据平台间数据迁移等。

此外、在BDB提供了对开发语言的支持、
数据结构定义文件采用XML标准格式、
并且开放了外部读取数据结构的源程序(C#/Delphi/JAVA)、
您可以通过使用BDB来简化软件开发和部署过程:

1、数据设计、自动安装:支持和数据之间的正向和反向工程。
既可以通过BDB进行新的数据设计,自动创建或更新至实体数据
也可导出现有数据结构,并为其创建数据自动安装程序。
2、跨数据平台:只需按熟悉的数据平台进行一次定义,就可在上述各个
数据平台进行数据自动安装和任意迁移。系统会自动进行语法、数据类型转换。
3、数据迁移:在不同数据平台间进行数据结构(包括数据表、索引、约束、
视图和存储过程对象)和数据迁移。
4、查询析、数据表查询、数据编辑功能。提供专用的SQL编辑器、
支持SQL语法高亮、快速脚本输入、脚本预定义等。
5、预输出创建、更新SQL脚本。
6、提供数据导入、导出功能。支持从Excel导入导出的双向编辑操作。
7、对开发语言的支持。开放的数据物理结构文件格式、并提供外部调用源程序,
包含C#、Delphi、JAVA三个版本。
8、数据物理结构定义和实体数据之间的比对更新、同步。
9、可为可重用属性创建数据字典定义、并进行同步。
10、采用方案定义、支持多个工程模式。
11、提供自定义功能、可以根据需要扩展数据结构定义文件。
12、支持多语言(目前版本语言:/英文)。并提供了新的语言定义的说明、
可根据需要增加新的语言支持。


版本更新:
1、2007.11.23 查询析清除数据效率改善处理
2、2007.11.23 加入Sybase支持。
3、2007.11.26 状态栏调整。
4、2007.11.26 加入执行断功能。
5、2007.11.26 数据表头资源增加备注项。
6、2007.11.26 查询析加入desc [data]取当前数据数据语法支持
7、2007.11.26 增加启动界面
8、2007.11.26 界面默认背景颜色更改。
9、2007.11.28 方案列表增加双击设置为当前方案处理。
10、2007.11.28 更正MySQL下删除索引语法问题。
11、2007.11.28 Oracle、MySQL导入数据增加禁用、重新启用外键约束处理。
12、2007.11.28 更正MySQL下处理导入日期类型字段数据问题。
13、2007.11.28 更正SQLServer下处理sql_variant、uniqueidentifier类型字段问题。
14、2007.11.28 更正数据迁移自定义数据链接问题。
15、2007.11.29 更正根据外键引用关系进行数据表排序问题。
16、2007.11.30 更正初次保存数据表结构覆盖索引页记录问题。


website: http://www.bainsoft.com/
support: bainsoft@163.com
blog: http://blog.csdn.net/12rain

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧