它不是一个迁移工具。它不会提取或创建架构。首先,您必须通过使用一种架构迁移工具(如“生成脚本”向导),或通过提取并部署数据层应用程序 (DAC) 包,将架构转移到 Windows Azure SQL Database 中的一个数据库。有关确定架构迁移过程的帮助,请参阅 选择用于将数据库迁移到 Windows Azure SQL Database 的工具。bcp 实用工具调用的 SQL Server 大容量复制功能也公开在 SQL Server 的应用程序编程接口 (API) 中。若干迁移工具(如 Windows Azure SQL Database 迁移向导和 DAC BACPAC)也使用大容量复制功能来传输数据。建议利用大容量复制最佳实践,以提高在将数据复制到大型目标表时的性能。例如: 使用-N 选项在本机模式下传输数据,这样,就不需要进行任何数据类型转换。
使用 –b 选项指定批大小。每个批处理均作为单独的事务插入和记录。默认情况下,数据文件中的所有行均作为一个批次导入。如果某个事务失败,则只回滚当前批处理中的插入。确定最佳批处理大小并使用此批处理大小是一个很好的做法,这可以减少在数据迁移期间与 Windows Azure SQL Database 断开连接的几率。
使用bcp 提示:
对导入使用 –h “TABLOCK” 提示,以便指定在大容量加载 *** 作期间使用大容量更新表级锁定。这样,通过使用单个表锁定(而不是对每行使用一个锁定),可以减少锁定开销。
对导出使用 –h “ORDER(…)” 提示可对数据文件排序。如果根据表的聚集索引对要导入的数据排序,则将提高大容量导入的性能。
对于大型表,将导入副本拆分为您可以同时运行的多个流。如果您已将源表中的数据大容量复制到单个数据文件中,则使用 –F firstrow 和–L lastrow 参数指定 bcp 的每次运行应处理数据文件的哪个部分。
有关大容量复制最佳实践的详细信息,请参阅优化大容量导入性能。如果您要使用 IDENTITY 生成表中的主键,请使用 bcp –E 参数以保留在源数据库中生成的键。-E 应防止在导入过程中出现任何外键违规,前提是在运行导入时没有对表进行任何其他更新。确保不可能有其他更新,例如将数据库放在只读模式下。注意bcp 一次运行一个表,因此,当从源数据库中提取数据时,它不维护多个表间的事务完整性。您可以通过在导出过程中将源数据库放在单用户或只读模式来解决此问题。
[返回页首]限制和局限目标数据库中的表必须是空的,才能进行大容量复制导入。除非您截断或删除由以前的大容量复制插入的所有行,否则,您不能对同一个表执行多个批量复制导入。[返回页首]先决条件bcp 随SQL Server 提供。从 SQL Server2008 R2 或更高版本的 SQL Server 安装客户端实用工具,以获得能够与 Windows Azure SQL Database 结合使用的 bcp 版本。[返回页首]使用bcp 迁移数据使用bcp 将数据从源数据库中的一个表移到目标数据库中该表的副本涉及五个步骤:迁移架构。 使用架构传输机制(如“生成脚本”向导或 DAC BACPAC)在 Windows Azure SQL Database 中创建数据库的副本。在这一进程结束时,所有表应已在 SQL Database 数据库中创建,但不包含任何数据。
将数据导出到数据文件。 对于源 SQL Server 数据库中的每个表,运行 bcp out *** 作,以将表中的数据复制到数据文件。这是将数据从一个表导出到数据文件的示例:
bcp tableName out C:\filePath\exportFileNamedat –S serverName –T –n -q out 参数指示从 SQL Server 复制出数据。-n 参数使用数据的本机数据库数据类型执行大容量复制 *** 作。-q 参数在 bcp 实用工具与数据库引擎实例之间的连接中执行 SET QUOTED_IDENTIFIERS ON 语句。
执行大容量复制优化 对任何目标数据库架构进行所需的更改,以提高将数据复制到大型表的性能,如禁用非聚集索引、触发器和约束。
将数据文件导入SQL Database 对于Windows Azure SQL Database 目标数据库中的每个表,运行 bcp 实用工具,同时将导出数据文件中的数据复制到表中。此示例包括 bcp 的三次运行,其作用是将数据从大约具有 300,000 行的数据文件复制到单个表中。每次运行复制的行数约为 100,000。
Bcp tableName in c:\filePath\exportFileNamedat –n –U userName@serverName –S tcp:serverNamedatabasewindowsnet –P password –b 200 –L 99999 –h”TABLOCK” Bcp tableName in c:\filePath\exportFileNamedat –n –U userName@serverName –S tcp:serverNamedatabasewindowsnet –P password –b 200 –F 100000 –L 199999 –h”TABLOCK” Bcp tableName in c:\filePath\exportFileNamedat –n –U userName@serverName –S tcp:serverNamedatabasewindowsnet –P password –b 200 –F 200000 –h”TABLOCK” in 参数指示将数据复制到 Windows Azure SQL Database 中。–b 参数指定每批导入数据的行数。–L lastrow 和–F firstrow 参数用于指定每次运行应处理数据文件的哪个部分。
删除架构优化 还原已删除的任何架构项,以优化大容量插入。例如,启用在步骤 3 中禁用的任何非聚集索引、触发器或约束。
在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL。下面是小编日常整理的一种sqlserver数据库迁移的方法。
一、SQL Server中常用数据类型与MySQL不同的地方
二、将SQL Server数据迁移到MySQL需要注意的一些问题
1、唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个null值。
2、存储过程的语法存在很大的不同,存储过程的迁移是最麻烦的,需要仔细修改。
3、程序中部分写的SQL语句由于语法的不同也要相应的修改。
三、将SQL Server数据迁移到MySQL的常见方法
1、使用 SQLyog 迁移
优点
该迁移方法很简单,灵活,迁移时,可以进行字段的修改,比如在sql server中原来是datetime,然后迁移到mysql时你可以配置成timestamp;成功率很高;
缺点
迁移很慢!这是该方法最大的缺点,如果表的数据量达到几十万行,甚至几百万行,你会发现迁移起来真的很慢。明显比其他迁移方法慢很多。
2、使用 powerdesigner 和 sql server 的脚本导出功能 来迁移
(1)、该方法首先使用 powerdesigner,对sql
server数据库,进行逆向工程,得到E-R图,然后生成MySQL的建表语句。完成数据库结构的迁移;当然表结构的迁移,不使用
powerdesigner一样也是可以的。比如我将表结构导出成语句,然后手动进行修改,然后在MySQL中运行,也是一样的;
(2)、然后使用 sql server的工具 SSMS,将sql server数据库中的表的数据,导出成insert语句,每个表对应导出一个文件,然后对文件进行一些处理,然后导入到MySQL数据库中。
3、使用Oracle MySQL Server 官方的 workbeach 工具进行迁移
(1)、在workbench 连接sql server时,用户需要有 view any database 的权限。不然workbench无法访问sql server的表结构的元数据,从而无法进行迁移。
(2)、还有使用 Navicat 来进行迁移的方法,方法和 SQLyog 是类似的。
下面要说的是如果将txt文本数据导入到Oracle中
Dos 环境下使用SQlLoader命令 加载
使用其它数据库的数据转移工具
Oracle 企业管理器中的数据加载功能
具体的技术实现
一、Dos 环境下加载
1、首先,服务器端的侦听服务必须已经开启。
测试方法:Dos 下输入
C:/>sqlplus username/password@serviceName
2、然后使用 Oracle 的 sqlldr 命令进行数据的导入
前期条件
1) Oracle 数据库端必须已经建好了需要导入的数据表的结构
2) 一个数据源文件 下面例子中为制表符分隔的文本文件 modeltxt ,为Excel 表中导出的
3) 手工编辑一个XXXCTL 的控制文件
4) 命令行加载数据
如下实例:
以下文件缺省放到C:/ 下,如果不是,就需要指明全路径
1. 命令控制文件 inputctl 内容
命令
说明
load data
1、控制文件标识
infile 'modeltxt'
2、要输入的数据文件名为testtxt
append into table system塔位属性表
3、向表test中追加记录
fields terminated by X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB)
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
在 Dos 窗口下使用 SQlLoader 命令实现数据的导入
C:/>sqlldr userid=system/manager@ serviceName control=inputctl
默认日志文件名为:inputlog
默认坏记录文件为:inputbad
二、使用其它数据库转移工具
以下以SQL Server 导入导出向导为例
1、在数据的导入导出向导中设置数据源服务器,实例中选择数据源选择SQL Server
2、然后指定要导入的Oracle 数据源
3、需要配置Oracle 的属性信息
需要注意的是,登录数据库的用户信息即为数据导入之后的方案名,即导入之后的SQL Server 中的表在Oracle 中标志名为 username表名
以下按照提示即可,可以完全导入SQl Server 中的数据表和视图,也可以使用查询语句返回你要选择的列或者行。
三、Oracle 企业管理器中的数据加载功能
登录Oracle 的控制台界面,针对单独的数据表可以使用数据加载工具
中间需要指定控制文件等,同Dos 加载一致,不再重复
----------------------------------------------------
向Oracle中导入文本数据时使用的控制文件格式
无论是使用上一篇中的哪种方式都需要有一个控制文件,下面是控制文件(ctl文件)书写的基本格式:
命令
说明
load data
1、控制文件标识
infile 'testltxt'
2、要输入的数据文件名为testtxt,此时是要导入的数据文件同控制文件在同一路径下,如果不在同一路径下则需要写完整路径名
append into table 表名(可以是全名也可以是同义词)
3、向表test中追加记录
fields terminated by X'09'
4、指定分隔符,字段终止于X'09',是一个制表符(TAB),如果用逗号分割就将X'09'替换为','
(编号,名称,大小)
5、定义列对应表中顺序
控制文件中指定插入数据的方式关键字
insert,为缺省方式,在数据装载开始时要求表为空
append,在表中追加新记录
replace,删除旧记录,替换成新装载的记录
truncate,同上
控制文件的示例:
load data
infile 'testtxt'
append into table testtest
fields terminated by X'09'
(test,test1,test2)
对有时间类型的数据导入的示例控制文件:
load data
infile 'h:/TB_FACT_PHS_TICKET_DAYtxt'
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=testctl(此时控制文件testctl存在C:/路径下)
在命令控制符下进入Oracle C:/>sqlplus username/password@serviceName
oracle导入txt数据文件2008年07月30日 星期三 17:21把txt文件格式的数据文件导入oracle的方法是利用sqlloader工具。
第一步:把文本格式的数据文件放入C盘。如,testtxt
第二步:建立控制文件appendctl。(名字可以随便取,放C盘下)
appendctl的内容如下:
load data --1、控制文件标识
infile 'testtxt' --2、要输入的数据文件名为testtxt
append into table CTXSYStest --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:/appendctl 数据库中用名的用户名和密码
或者 C:/>sqlldr userid=system/manager@ serviceName control=inputctl
第二条命令中的system数据库用户名
manager密码
@serviceName 是Oracle中本地配置文件的服务名
----------------------------------------------------
一些经常出现的问题:
1。关于日期格式的问题:
ctl基本写法诸如:
load data
infile 'C:/TP_LOANCONTRACTSUMtxt'
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_PLEDGECONTRACTINFOtxt'
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
)
oracle 数据库怎么从测试数据库迁移正式
方法1:移植实用程序(Migration Utility)
方法2:Oracle 数据移植助理(Oracle data Migration Assistant)
方法3:导入/导出工具(Export/Import)
(1) 数据库内核
· *** 作系统平台
跨越多种 *** 作系统平台,可运行于Windows、Linux、Solaris等 *** 作系统平台上,客户端与服务器都可跨越 *** 作系统平台。
· 数据存储
支持TB级数据量,数据文件自动管理,无须人工干预。
· 内存管理
· 数据类型
· 数据库对象
· *** 作符
· 表达式
· 系统函数
· 事务处理
· 完整性
· SQL语句
(2)数据库工具
· 控制管理器
· 企业管理器
· 查询分析器
· 物理备份恢复工具
· 逻辑备份还原工具
· 数据迁移工具
· 作业调度管理工具
· 系统监控与跟踪工具
(3)数据库接口
· OLE DB
· ODBC
· JDBC
· ESQL
(4)数据库文档
· 联机帮助
以上就是关于哪位高手可以推荐几款通用的数据库管理工具全部的内容,包括:哪位高手可以推荐几款通用的数据库管理工具、怎么把sql数据库从旧电脑移动到新电脑安装、如何使用 bcp 将数据库迁移到 Windows Azure SQL Database等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)