本文主要讲述如何将Sybase数据库的数据迁移至Oracle中,因为我对Sybase不熟悉,所有本文讲述的只是完成Sybase数据表中的数据迁移到Oracle的一个过程

一、Sybase以及Oracle数据库配置

1、连接Sybase数据库

1.1、首先安装Sybase数据库以及Sybase数据库的可视化工具DBArtisan8.6.1

1.2、到Sybase数据库安装路径中(我的安装路径是:C:\SAP)找到ini文件夹下的sql.ini配置文件

(我的路径位置是 C:\SAP\ini),这个文件的功能就是配置数据库的数据源(包含数据库的主机地址

,端口,以及服务器名称

[dev](服务器名)

master=TCP,192.168.44.22,4100(数据库主机地址192.168.44.22以及端口4100)

query=TCP,192.168.44.22,4100

1.3、使用DBArtisan连接Sybase数据库:Datasource->Register Datasource,在弹出的窗口中

1.3.1、选择Sybase Adaptive Serve,下一步

连接Sybase数据库

1.3.2、填入数据源的主机地址以及ip端口

1.3.3、填入用户名以及密码,然后测试连接,如果连接通过,那就点击下一步

标题

1.3.4、然后点击完成,配置数据源就成功了

1.4、上面的步骤完成后,可视化工具会显示刚才自己配的数据源,双击,填写用户名和密码,登录

2、连接Oracle数据库(不作详述)

二、将Sybase数据库中的数据导出到txt文件中

2.1、在Sybase可视化工具DBArtisan打开sql编辑窗口,执行下列语句:

set nocount on

use emulator(数据库名)

go

select 'bcp emulator.dbo(所有者).' + name + ' out d:\temp\' + name + '.txt -Sdev(dev为数据库服务器名) -Ucontrol(control为用户名) -Pcontrol(control为密码) -t"!|"(表示每个字段数据用!|分隔) -r"\n" -c' from sysobjects where type='U'

go

这个语句的作用就是生成所有表的bcp导出命令,这个bcp命令就是用来导出表的数据到txt文件中

2.2、执行上面的语句后,会生成如下结果:

导出数据到txt的bcp命令

上面的bcp命令的意思就是:将emulator这个数据库中的account、relation、banker等表中的数据导出到

d:\temp\XX.txt文件中

-S:表示数据库所在的服务器名,在上面的sql.ini文件有配置;

-U:表示数据库的用户名

-P:表示数据库用户密码

-t"!|":表示在导出数据的时候,每个字段都用!|分隔开

2.3、创建一个.bat文件,并将上面的bcp命令都复制到bat文件中,然后双击执行这个bat批命令,没有报错后,就

可以在d:\temp这个目录下导出数据了

导出数据后生成的txt文件

三、将txt文件中的数据导入到Oracle中:

下面以导入relationt表为例:

3.1、打开Sybase可视化工具DBArtisan,选中relation表,然后点击Extract

导出relation表结构

这个步骤的作用就是查看relation表结构:

relation表结构

3.2、Oracle建表

因为Sybase的数据类型datetime和Oracle的数据类型不一样,Oracle的类型是date,所以不能直接将txt直接

导入到Oracle中,首先需要在Oracle建立临时表,并且临时表所有的时间类型都用varchar表示:

Oracle临时表:

CREATE TABLE relation1

(

fundacc    char(30) NOT NULL,

mnytype    char(4)  NOT NULL,

banker     char(8)  NOT NULL,

bankacc    char(30) NOT NULL,

acctype    char(4)  NOT NULL,

openmode   char(2)  NOT NULL,

b_branch   char(8)  NOT NULL,

b_deptid   char(8)  NOT NULL,

userid     char(8)  NOT NULL,

status     char(2)  NOT NULL,

settime1    varchar(30) NOT NULL,(时间类型统一用varchar)

updatetime1 varchar(30) NOT NULL,

CONSTRAINT pk_relation1

PRIMARY KEY(fundacc,mnytype,banker,bankacc)

);

commit;

Oracle正式表:

CREATE TABLE relation

(

fundacc    char(30) NOT NULL,

mnytype    char(4)  NOT NULL,

banker     char(8)  NOT NULL,

bankacc    char(30) NOT NULL,

acctype    char(4)  NOT NULL,

openmode   char(2)  NOT NULL,

b_branch   char(8)  NOT NULL,

b_deptid   char(8)  NOT NULL,

userid     char(8)  NOT NULL,

status     char(2)  NOT NULL,

settime    date NOT NULL,

updatetime date NOT NULL,

CONSTRAINT pk_relation

PRIMARY KEY(fundacc,mnytype,banker,bankacc)

);

commit;

在Oracle执行上面建表语句

3.3、生成ctl脚本:

Oracle有一个叫sqlldr的工具,可以用来将txt数据导入到数据表中,建立一个后缀名为ctl的脚本,脚本命名

为relation.ctl。将以下内容写进脚本中:

load data

infile 'D:\temp\relation.txt'(Sybase导出的txt数据)

append into table relation1(表示将txt的数据导入到relationX1表中)

fields terminated by "!|" (读取txt数据时,以!|终止,每一个!|分隔的数据就表示一个字段的数据)

OPTIONALLY ENCLOSED BY '"'

trailing nullcols(表示允许字段数据为null)(下面对应relation表的字段名称)

(

fundacc,

mnytype,

banker,

bankacc "nvl(:bankacc,' ')",(读取txt文件时,如果该字段数据为null,那么给一个空格作为默认值,因为有些表设计的时候,字段不能为null,所以给一个空格)

acctype "nvl(:acctype,' ')",

openmode "nvl(:openmode,' ')",

b_branch "nvl(:b_branch,' ')",

b_deptid "nvl(:b_deptid,' ')",

userid "nvl(:userid,' ')",

status,

settime1,

updatetime1

)

3.4、编写sqlldr命令,并放到命令行执行:

sqlldr test/test@127.0.0.1:1521/goldpre control=D:\relation.ctl log=D:\SybaseToOracle_Log\relation.log

test/test@127.0.0.1:1521/goldpre 是Oracle数据源,127.0.0.1:1521是数据源主机地址以及端口,goldpre是

数据源服务器名

D:\relation.ctl表示ctl脚本的位置;

log=D:\SybaseToOracle_Log\relation.log:执行ctl后生成的日志文件

上面命令执行后,查看日志文件,没报错的话,就继续下面步骤

3.5、将临时表的数据转换迁移到正式表中

下面这条sql是将临时表relation1的数据复制插入到正式表relation中

insert into relation  select fundacc,mnytype,banker,bankacc,acctype,openmode,b_branch,b_deptid,userid,status,to_date(substr(settime1,1,length(settime1)-6)||substr(settime1,length(settime1)-1,2),'Mon DD YYYY HH:MI:SSPM','NLS_DATE_LANGUAGE = American') settime,to_date(substr(updatetime1,1,length(updatetime1)-6)||substr(updatetime1,length(updatetime1)-1,2),'Mon DD YYYY HH:MI:SSPM','NLS_DATE_LANGUAGE = American') updatetime from relation1

下面这段函数就是讲varchar类型的日期数据(Dec 14 2004  7:26:23:390PM)转换成date类型的数据

to_date(substr(settime1,1,length(settime1)-6)||substr(settime1,length(settime1)-1,2),'Mon DD YYYY HH:MI:SSPM','NLS_DATE_LANGUAGE = American') settime

删除临时表:

drop table relation1;

purge table relation1;

最后使用select * from relation,查看表中数据是否有问题,到此表数据由Sybase迁移到Oracle就完成了

四、结束语:

因为本人对Sybase不熟悉,所以以上工作仅限Sybase表中数据迁移,不设计存储过程等其他的,如有问题欢迎大家指点

改进。

Sybase迁移Oracle字符集问题,Sybase数据库迁移数据到Oracle(未改进)相关推荐

  1. Sybase迁移Oracle字符集问题,Sybase更换字符集(cp850--cp936)

    修改的操作步骤 Sybase server名:eastsoftcourt (在Dsedit中设置) Sybase sa的口令:sybase 生产库名:escourt6 操作的目录:d:\sybase ...

  2. aws 数据库迁移_使用AWS进行数据库迁移

    aws 数据库迁移 The Agenda of this blog is to understand the different aspects of Data Migration. This blo ...

  3. aws mysql迁移_AWS Data Migration Service-AWS数据库迁移服务-AWS中国区域

    AWS Database Migration Service 可帮助您快速并安全地将数据库迁移至 AWS.源数据库在迁移过程中可继续正常运行,从而最大程度地减少依赖该数据库的应用程序的停机时间.AWS ...

  4. EF mysql 数据迁移_EF Code First Migrations数据库迁移

    1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...

  5. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL

    从自建MySQL迁移至RDS MySQL 更新时间:2020-08-20 10:49:52 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 增量数据迁移支持同步的SQL操作 数据库 ...

  6. python数据库迁移教程_django中的数据库迁移的实现

    Django是用python写的web开发框架,其特点是: 1.重量级框架,内部封装了很多的功能组件,使开发变的简便快速, 2.MVT模式:前后端分离,高内聚低耦合,m:model,与mvc中的m功能 ...

  7. ORACLE字符集为US7ASCII,插入数据,中文乱码问题解决

    1.可以通过select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';查到ORACLE的字符集 US7ASCI ...

  8. oracle client 默认端口,[数据库]配置精简版Oracle客户端

    [数据库]配置精简版Oracle客户端 0 2012-12-22 16:00:24 一般只是作为客户端访问Oracle,并不需要安装庞大的Oracle.有时候经常忘记怎么配置精简版Oracle,这篇文 ...

  9. MySQL数据库同步数据到Oracle

    通过一个工具可以将不同数据库的数据同步到另一个数据库中,以MySQL数据导入到Oracle为例: 导入工具 Navicat Premium 15 工具下载地址 Navicat | 产品 操作步骤: 1 ...

  10. cmd oracle sys登录_Oracle数据库之cmd 登录oracle

    本文主要向大家介绍了Oracle数据库之cmd 登录oracle,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. cmd 登录oracle 源地址:http://zhidao.b ...

最新文章

  1. Traveller项目介绍
  2. frame框架的显示隐藏操作 (转)
  3. 随机蕨(Random Fern)
  4. 微信小程序之可滚动视图容器组件 scroll-view
  5. TortoiseSVN客户端重新设置用户名和密码
  6. BlogEngine(4)---Widget小部件
  7. 音视频低延迟应用的四个技术实践
  8. Windows 7各服务项介绍
  9. java 时间戳转换成时间_java 10位时间戳 转成时间
  10. git clone 出现fatal: unable to access ‘https://github 类错误解决方法
  11. 【案例】保健品行业如何优化供应链管理?APS系统来帮忙
  12. android轮播图实现方案,Android轮播图实现教程
  13. CCF NOI1021 发放奖金
  14. IP地址转化为32位无符号数
  15. 京东全链路压测军演系统(ForceBot)架构解密
  16. Visual Basic 6.0精简版下载地址
  17. 在我的ibmR40上装osx86
  18. 【Git】解决Untracked Files Prevent Checkout的问题
  19. 视比特“AI+3D视觉”核心产品 | 智能下料分拣产线
  20. html编辑器怎么设置为excel,excel2013宏编辑器的设置方法教程

热门文章

  1. 网页采集器,全自动网站采集发布(图文)
  2. 计算机病毒库更新记录表,计算机病毒库
  3. D7000、60D、K5、E5的详细对比评价(转)_我是亲民_新浪博客
  4. 中彩分析家 v7.18 build 1203 怎么用
  5. 如何进入百度、阿里,一个6年Android老司机的面经
  6. c#学习笔记---BackgroundWorker 详解
  7. 南天PR2、PR2E驱动下载,xp,win7,win8,win8.1,win10 32位64位驱动下载安装教程
  8. ActiveX控件进行注册
  9. DL for Scratch 读书笔记
  10. Redhat7.3修改密码