① 如何从sql Server迁移大批量数据到Oracle
下面要说的是如果将txt文本数据导入到Oracle中
Dos
环境下使用SQl*Loader命令
加载
使用其它数据库的数据转移工具
Oracle
企业管理器中的数据加载功能
具体的技术实现
一、Dos
环境下加载
1、首先,服务器端的侦听服务必须已经开启。
测试方法:Dos
下输入
C:/>sqlplus
username/password@serviceName
2、然后使用
Oracle
的
sqlldr
命令进行数据的导入
前期条件
1)
Oracle
数据库端必须已经建好了需要导入的数据表的结构
2)
一个数据源文件
下面例子中为制表符分隔的文本文件
model.txt
,为Excel
表中导出的
3)
手工编辑一个XXX.CTL
的控制文件
4)
命令行加载数据
如下实例:
以下文件缺省放到C:/
下,如果不是,就需要指明全路径
1.
命令控制文件
input.ctl
内容
命令
说明
load
data
1、控制文件标识
infile
'model.txt'
2、要输入的数据文件名为test.txt
append
into
table
system.塔位属性表
3、向表test中追加记录
fields
terminated
by
X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB)
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
在
Dos
窗口下使用
SQl*Loader
命令实现数据的导入
C:/>sqlldr
userid=system/manager@
serviceName
control=input.ctl
默认日志文件名为:input.log
默认坏记录文件为:input.bad
二、使用其它数据库转移工具
以下以SQL
Server
导入导出向导为例
1、在数据的导入导出向导中设置数据源服务器,实例中选择数据源选择SQL
Server
2、然后指定要导入的Oracle
数据源
3、需要配置Oracle
的属性信息
需要注意的是,登录数据库的用户信息即为数据导入之后的方案名,即导入之后的SQL
Server
中的表在Oracle
中标志名为
username.表名
以下按照提示即可,可以完全导入SQl
Server
中的数据表和视图,也可以使用查询语句返回你要选择的列或者行。
三、Oracle
企业管理器中的数据加载功能
登录Oracle
的控制台界面,针对单独的数据表可以使用数据加载工具
中间需要指定控制文件等,同Dos
加载一致,不再重复
----------------------------------------------------
向Oracle中导入文本数据时使用的控制文件格式
无论是使用上一篇中的哪种方式都需要有一个控制文件,下面是控制文件(ctl文件)书写的基本格式:
命令
说明
load
data
1、控制文件标识
infile
'testl.txt'
2、要输入的数据文件名为test.txt,此时是要导入的数据文件同控制文件在同一路径下,如果不在同一路径下则需要写完整路径名
append
into
table
表名(可以是全名也可以是同义词)
3、向表test中追加记录
fields
terminated
by
X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB),如果用逗号分割就将X'09'替换为','
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
控制文件的示例:
load
data
infile
'test.txt'
append
into
table
test.test
fields
terminated
by
X'09'
(test,test1,test2)
对有时间类型的数据导入的示例控制文件:
load
data
infile
'h:/TB_FACT_PHS_TICKET_DAY.txt'
Append
into
TABLE
TB_FACT_PHS_TICKET_DAY
fields
terminated
by
X'09'
(Time_Id
,Region_Id
,Cust_Type_Id
,Prod_Type_Id
,Acct_Item_Type_Id
,Acct_Item_Type_Cd
,Exchange97_Cd
,Latn_Cd
,Call_Duration
,Access_In_Duration
,Income
,In_Date
Date
"YYYY-MM-DD"
)
文件导入命令
C:/>sqlldr
userid=test/test@test
control=test.ctl(此时控制文件test.ctl存在C:/路径下)
在命令控制符下进入Oracle
C:/>sqlplus
username/password@serviceName
oracle导入txt数据文件2008年07月30日
星期三
17:21把txt文件格式的数据文件导入oracle的方法是利用sqlloader工具。
第一步:把文本格式的数据文件放入C盘。如,test.txt
第二步:建立控制文件append.ctl。(名字可以随便取,放C盘下)
append.ctl的内容如下:
load
data
--1、控制文件标识
infile
'test.txt'
--2、要输入的数据文件名为test.txt
append
into
table
CTXSYS.test--3、向CTXSYS表空间中的表test中追加记录
fields
terminated
by
X'09'
--4、字段终止于X'09',是一个制表符
(id,username,password,sj)
-----定义列对应顺序
其中append为数据装载方式,还有其他选项:
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上
第三步:在命令提示符下输入命令。
C:/>sqlldr
userid=username/password
control=c:/append.ctl
数据库中用名的用户名和密码
或者
C:/>sqlldr
userid=system/manager@
serviceName
control=input.ctl
第二条命令中的system数据库用户名
manager密码
@serviceName
是Oracle中本地配置文件的服务名
----------------------------------------------------
一些经常出现的问题:
1。关于日期格式的问题:
ctl基本写法诸如:
load
data
infile
'C:/TP_LOANCONTRACTSUM.txt'
insert
into
table
TP_LOANCONTRACTSUM
fields
terminated
by
'|!'
(
column01,
column02,
column03,
column04
"to_date(:column04,'''yyyy-mm-dd
hh24:mi:ss''')",
column05
"to_date(:column05,'''yyyy-mm-dd
hh24:mi:ss''')",
column06,
column07,
column08,
column09,
column10,
column11,
column12
"to_date(:column12,'''yyyy-mm-dd
hh24:mi:ss''')",
column13
)
2。关于长字符串问题,CTL默认情况下是256位(或者256位左右),所以长字符串时会在log里报错,提示所输入的值超过最大长度,解决办法,在ctl文件里再指定大小,注意个情况,不能写VARCHAR只能写CHAR,否则报错,诸如:
load
data
infile
'C:/TP_PLEDGECONTRACTINFO.txt'
insert
into
table
TP_PLEDGECONTRACTINFO
fields
terminated
by
'|!'
(
column01,
column02,
column03,
column04,
column05,
column06,
column07
"to_date(:column07,'''yyyy-mm-dd
hh24:mi:ss''')",
column08,
column09,
column10
"to_date(:column10,'''yyyy-mm-dd
hh24:mi:ss''')",
column11,
column12,
column13,
column14,
column15
"to_date(:column15,'''yyyy-mm-dd
hh24:mi:ss''')",
column16,
column17,
column18
"to_date(:column18,'''yyyy-mm-dd
hh24:mi:ss''')",
column19,
column20,
column21,
column22,
column23,
column24,
column25
"to_date(:column25,'''yyyy-mm-dd
hh24:mi:ss''')",
column26
CHAR(500),
column27,
column28
)
② SQL数据库转移(将老数据库添加到新数据库)
把旧数据库的 SQL服务停止,把数据库的目录下的 所需数据库 复制到新的所需位置,用SQL2008的 附加数据库,就可以保持原来的数据及表结构了
③ 如何把sqlserver的数据迁移到mysql中
以下有几款迁移工具的对比,可以参考,比较推荐DB2DB.
软件易用性主要是指软件在导入前的配置是否容易。由于很多软件设计是面向程序员而非一般的数据库管理人员、甚至是普通的应用程序实施人员,而这一类人员很多时候并没有数据源配置经验。因为一些使用 ODBC 或者 ADO 进行配置的程序往往会让这类用户造成困扰(主要是不知道应该选择什么类型的数据库驱动程序)。下面让我们看看四个工具的设计界面:
>>>>
1、SQLyog
SQLyog使用的是古老的 ODBC 连接,但对于新一代的程序来说,这种方式的非常的不熟悉并且不容易使用,并且必须要求本机安装好相应的数据库的 ODBC 驱动程序(SQL Server 一般自带好)。
>>>>
2、NavicatPremium
NavicatPremium是四个应用工具中设计最不人性化的一个:从上图怎么也想象不到要点按那个小按钮来添加一个新的连接,并且这个连接设置不会保存,每次导入时都必须重新设置。NavicatPremium使用的是比 ODBC 稍先进的 ADO 设置方式(199X年代的产物),但使用上依然是针对老一代的程序员。
>>>>
3、Mss2sql
Mss2sql是最容易在网络上搜索出来的工具,原因之一是它出现的时间较早。
DB2DB同样迁移 300万数据时,仅仅使用了 2 分 44 秒,这个速度相当惊人。不过最后的结果出现一个 BUG,就是提示了转换成功,但后面的进度条却没有走完(在后面的数据完整性评测中,我们验证了数据其实是已经全部处理完毕了)。
④ 如何把sql server数据库迁移到oracle
前阵做了下数据库迁移,从Sql Server2005迁移到Oracle
10g,这里说一下迁移的方法。
Sql
Server和Oracle区别比较大,包括语法,字段类型,数据库机制,配置管理方法等等,区别是全方位的,做迁移需要注意很多问题,在迁移过程中也会遇到问题,需要细细处理之。这里说一下数据库结构的迁移,和迁移过程中注意的一些问题。(当然具体的数据库迁移过程中可能问题是不一样的,具体问题具体分析了)
迁移的方法是从Sql Server已有数据库中生成出Oracle的建库脚本,然后在Oracle数据库上执行。用到的生成工具是Power
Designer。
1、打开PD(Power
Designer简称,以下均使用PD),新建一个PDM(物理数据模型),DBMS选择Microsoft SQL
Server2005,Model name起名叫做mssdb。
2、通过逆向工程将现有Sql
Server数据库生成PDM
(1)选择Database->Reverse
Engineer Database,配置数据源,选择要迁移的数据库,输入用户名、密码。
(2)选择数据库,选择用户dbo下的所有表、视图、存储过程、方法、触发器、序列等(由于Sql Server与oracle,数据库概念上的区别,这里不需选择用户、角色)。
点击OK,生成PDM。已经建立过PDM的情况,这一步可以省略。
3、生成Oracle物理数据模型
选择Tools->Generate Physical Data Model
(1)DBMS选择Oracle
10g,输入名称:oradb。
(2)在Configure Model
Options配置中, Model Settings的Table&View界面中,勾选Ignore
identifying owner。Oracle中用户的概念与Sql Server不同,这里忽略owner。
(3)Selection标签,选择需要生成的所有表、视图、外键、存储过程、方法、触发器、序列等。
点击确定,即生成了oracle 的PDM。
注意,在生成PDM的过程中可能不会一帆风顺,有可能会报错(比如提示对象长度超限),这会导致生成失败。这时需要根据具体错误提示做相应修改(可能需要多次调整,没有办法,谁让两者差别这么大的呢)。
4、生成Oracle脚本
与Sql
Server不同的是,在Oracle里表名、字段名全部为大写,若要单独处理为小写,需加上双引号。而PD生成的脚本默认是有双引号的,这里需要修改默认配置,去掉双引号。
然后选择oradb,然后选择Database->Generate
Database,进入数据库生成界面
在Format标签下,去掉勾选Owner prefix,它将省掉建表语句前“dbo.”所带来的麻烦;
在Selection标签下,选择要生成脚本的各对象;
在Preview标签下,可以预览预生成的脚本(表较多时,切换会比较慢)。
点击确定,即得到生成的脚本。
5、检查与调整
脚本是PD自动生成的,因为表比较多,在oracle上直接去执行难免会有错误。所以在执行之前需要检查下脚本的正确性。这里提几点需要注意的地方。
(1)Oracle要求表名、字段名等长度最多是30位,而Sql Server没有这个限制,所以可能会有在Sql
Server创建正常的表而在Oracle下会创建失败。
(2)检查一下主键、外键的名称,它们有可能是随机生成的名称。可根据相应规范进行修改。
(3)检查字段名是否用到了Oracle的关键字。比如Sql
Server命名“备注”字段可能会用“comment”、标题用“title”,但comment、title在Oracle中是关键字,不可以做为字段名称。
(4)存储过程、方法是否符合Oracle语法。
(5)Sql
Server有自增字段,而Oracle没有。要实现此功能,需要相应创建序列、触发器。
(6)Sql
Server中字段类型为text的情况,如果是存二进制数据需要在Oracle中选用Blob字段类型。
(7)Sql
Server有外键的情况,主表记录删除,从表记录也会跟着删除;而Oracle默认情况是当从表有记录时,所对应的主表记录不允许删除。所以这种情况下外键需要添加外键级联删除。
(8)生成的表、视图等个数是否正确,缺失的情况可单独生成脚本。
系统不一样,出现问题的点可能也不一样,具体问题具体分析。
6、建库
在Oracle数据库服务(当然要先安装好Oracle服务端、并建立数据库)orcl实例下,使用用户sys登陆并创建用户orauser,并将resource、connect角色赋给orauser(这里,orauser使用默认表空间、默认临时表空间)。
用刚创建的用户orauser登陆orcl数据库服务,执行前面已经生成的脚本,若干分钟后脚本执行完毕,观察一下执行过程中有无错误产生,也可以记录执行的日志以便日后查看;检查看表、视图等个数与Sql
Server数据库中是否一致。如果都正确,那么,数据库结构从Sql
Server到Oracle的迁移到此结束。当然,迁移的是否正确还需要在之后的使用中检查,发现错误及时修改即可。
⑤ MSSQL数据迁移到MYSQL如何更快捷,求大神
navicat工具来将SQL Server数据迁移到MySQL
新建需要迁移的数据库
打开数据库,点击导入向导
选择数据导入格式
选择数据源
设置连接属性
选定要迁移的表
定义目标表
更改实际情况对目标表进行更改
选择导入模式
开始导入
导入后结果
至此,迁移完成,可以更改实际情况再对迁移后的表进行更改。
⑥ sql server 怎么迁移数据库
1、真心不建议你迁移系统数据库,太麻烦了。就一个系统用户账号就够你累的了。
2、我一般都是在新计算机上安装新的SQL服务实例,然后逐个迁移用户数据库
3、只需要向用户贴出安民告示即可,也就半个小时到1一个小时,基本上全部搞定。
若非要迁移,那么你可以这样做:
首先迁移master数据库,master数据库是整个SQL Server实例的核心,所有的设置都存放在master数据库里,如果master数据库出现问题,整个实例都将瘫痪。首先打开SQL Server Configuration Manager,在左边的列表框中选中SQL Server Services节点,然后在右边的列表框中找到需要迁移系统数据库的实例的那个SQL Server服务,比如说SQLServer(MSSQLSERVER),停止这个实例的服务(不会停的去菜场买块豆腐撞死算了),然后右键单击,选中最底下的“Properties”,并且切换到“Advanced”标签,如下图所示:
看到“Startup Parameters”了吧,这里的参数就是需要我们更改的。如下图所示:
把这段字符整理一下就是这样:
-dC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
-lC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
基本上看出来了吧,“-d”后面的就是master数据库数据文件的位置,“-e”是该SQL Server实例的错误日志所在的位置,至于“-l”就是master数据库日志文件所在的位置了。修改数据文件和日志文件的路径到适当为位置,错误日志的位置一般不需要做变更,例如将数据文件存放到D盘的SQLData文件夹下,日志文件存放到E盘的SQLLog文件夹下,则参数如下:
-dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf
点击“OK”保存并关闭对话框。
⑦ 如何将SQL Server数据库迁移到新服务器中
移动到新路径我们希望将这些数据库文件移动到一个新路径,键入新路径就可以。本文我们移动到下面的路径:D: SQLDATADatabase_Name_Here.mdf D:SQLLogsDatabase_Name_Here_1.ldf进度现在可以单击确定按钮,开始恢复数据库。成功恢复你已经成功恢复移动完成数据库文件。证据现在你已经成功恢复移动完成数据库文件——更多证据。新查询现在让我们介绍我喜欢使用的方法,该方法省去了所有选择和单击。你可以使用一条TSQL Restore移动语句完成同样的任务。使用T—SQL方法移动数据库让我们从打开SQL Server管理工具开始,然后单击新查询按钮。逻辑名称第一步需要运行下面的查询:Restore FILELISTONLY FROM DISK='d:Business_Data.bak' 利用该查询可以找到需要恢复到新路径的数据库和日志文件的逻辑名称。恢复到新路径在获得了逻辑名之后,我们可以使用下面的查询将数据库恢复到一个新位置。RESTOREDATABASEBusiness_Data_TSQLFROM DISK='d:Business_Data.bak'WITHMOVE 'Business_Data' TO 'D:TSQLBusiness_Data.mdf', MOVE 'Business_Data_log' TO 'D:TSQLBusiness_Data_log.ldf' 该语句将用来恢复数据库到一个新路径。完成百分比你可以看到Restore FileListOnly TSQL语句中使用的逻辑名和物理名。如果是一个较大的数据库为了查看完成进度,还可以添加状态语句如下所示:RESTOREDATABASEBusiness_Data_TSQLFROM DISK='d:Business_Data.bak'WITHMOVE 'Business_Data' TO 'D:TSQLBusiness_Data.mdf', MOVE 'Business_Data_log' TO 'D:TSQLBusiness_Data_log.ldf', STATS=5 本文中,我们介绍了完成的数据库备份恢复方法。
⑧ mysql to sql server 2008迁移工具怎么用
以下有几款迁移工具的对比,可以参考,比较推荐DB2DB.
软件易用性主要是指软件在导入前的配置是否容易。由于很多软件设计是面向程序员而非一般的数据库管理人员、甚至是普通的应用程序实施人员,而这一类人员很多时候并没有数据源配置经验。因为一些使用 ODBC 或者 ADO 进行配置的程序往往会让这类用户造成困扰(主要是不知道应该选择什么类型的数据库驱动程序)。下面让我们看看四个工具的设计界面:
>>>>
1、SQLyog
SQLyog使用的是古老的 ODBC 连接,但对于新一代的程序来说,这种方式的非常的不熟悉并且不容易使用,并且必须要求本机安装好相应的数据库的 ODBC 驱动程序(SQL Server 一般自带好)。
>>>>
2、NavicatPremium
NavicatPremium是四个应用工具中设计最不人性化的一个:从上图怎么也想象不到要点按那个小按钮来添加一个新的连接,并且这个连接设置不会保存,每次导入时都必须重新设置。NavicatPremium使用的是比 ODBC 稍先进的 ADO 设置方式(199X年代的产物),但使用上依然是针对老一代的程序员。
>>>>
3、Mss2sql
Mss2sql是最容易在网络上搜索出来的工具,原因之一是它出现的时间较早。
DB2DB同样迁移 300万数据时,仅仅使用了 2 分 44 秒,这个速度相当惊人。不过最后的结果出现一个 BUG,就是提示了转换成功,但后面的进度条却没有走完(在后面的数据完整性评测中,我们验证了数据其实是已经全部处理完毕了)。
⑨ mysql数据库迁移,有什么工具或许办法
可以用Mysql-front,先导出member的Excel文件,然后把user表也导出Excel,把第一个表的列拷贝到第二个Excel里,然后再把Excel文件导入到user表里。
自己写脚本迁移过去,where条件是member和user的对应关系(这里假定member和user对应关系使用name对应的)
update user,member set user.price=member.money,user.truename=member.nickname where user.name=member.name
⑩ 怎么把sql数据库从旧电脑移动到新电脑安装
操作如下:
1.右键你需要的数据库–>任务–>分离
2.找到你的sqlserver安装文件夹
这里把你需要的数据库(如jjj)的两个相关文件拷贝到另一台电脑上,这里注意,你最好还是要放到sqlserver的这个文件夹,放别的地方可能会报错,因为文件夹的读写属性还有用户权限不一样,反正修改起来特别麻烦。
3.到另一台电脑上,右键–>附加–>选择你的mdf文件,确定,大功告成,数据库成功导入,简单吧!
我试了直接把文件复制过去,导入也成功了,所以不是很明白为什么要分离,我在网上查了一下:
数据库分离是指将数据库文件从数据库服务器实例中分离出来,相当于关闭了数据库。数据库分离后,应用程序不能连接到该数据库,数据库文件可以被其它进程访问。通常分离数据库用于快速地将数据库迁移到另一个SQLSERVER实例。
旧电脑把数据库分离,用U盘把数据库文件复制到新电脑,然后在数据库里把附加旧电脑的数据库文件上去就可以了