SQL Server导出导入数据方法

作者:操作系统    发布时间:2019-12-22 01:22     浏览次数 :

[返回]

图片 1

保存到 SQL Server msdb 数据库。

2、如果目的数据库经过防火墙,不在同一个局域网里,

论坛上一直看到有朋友问1我的数据库一个表怎么定期同步到另一个表2我的局域网络上两台sqlserver服务器上的数据库怎么同步3我的数据库迁移,n多用户登录信息怎么备份4我怎么定期去调用windows上的一个程序诸如此类很多...大凡看到数据库复制,后面一般都有跟贴邹老大的复制数据库方法,那段东西确实很经典,可以适应不同的平台(事实上我也收藏了),但是要知道那段东西我大概78年前就看到了,现在2005,2008都出来了,难道这么多时间里就没人研究其他方法?而且那段东西对初学者可能比较困难,比如建立MSDTC,链接服务器等,很多情况写SQL代码当然可以达到效果(事实上就没有写代码达不到的),但是写代码不一定意味着效率高。你可能要面对很多亢长的代码,还有很多可能从来没有涉及的系统存储过程。就拿问题一来说,论坛上说法很多,有建议用触发器的,有建议用select*into的,甚至有人建议用复制发布订阅的。那些方法不是不可以,但是往往会带来一系列问题,比如自增列的消失,索引必须重建利用等等。关键是效率不一定高。不管你是数据库管理员还是数据库开发,能省时间总不错吧.SQLServer有自带强大的工具DTS/SSIS(因为DTS太好用了,微软2005后决定把它单独做成一个扩展,而不是只是SQLServer的一个功能属性)合理使用这个工具很多问题根本不是问题,这篇文章将讨论一下DTS/SSIS的一个好用又方便特性--复制SQLServer对象(如果要全面论述DTS/SSIS,那足可以写一本书了,我只是以点代面,抛砖引玉,大家工作学习中可以继续发掘,共享经验),数据转换任务估计大家比较熟悉不讨论了,还有其实数据库的导入导出数据就是利用的调度dts包的特性来进行的,今天写点可能大家不太常用的.本篇文章主要解决数据库及其对象的复制传输,(不是说只能整个复制数据库,你只想复制存储过程,视图,自定义函数也完全可以)以后看看反响如何再写几篇,比如备份用户登录信息,dts自带的复制数据库向导(和今天说的不一样),dts和windows交互,多层dts综合应用等.本来要写个FTP相关的前些天看到Roy写了,就不写了.废话不多说上图(我这边英文版,我尽量翻译但是不一定准确,仅作参考)writtenby:billpu原帖地址:一拖出CopySQLServerOjectTask图标(中文好像叫复制对象任务)二配置源和目标信息这里没什么好说的,直接看图吧三设置复制的具体属性,这里重点说一下(1)创建目标(表,视图,存储过程,约束等)*删除目标(默认选项,如果存在对象就删除)*包括依赖的组件(默认选项,比如你复制一个自定义函数,dts会把相关的表传送过去)*包括扩展属性(非默认选项,复制SQLServer的扩展属性,比如字段的描述信息等)(2)复制数据,这边就不多说了*替换(默认选项)*追加(3)使用collation(默认选项)不清楚具体应该怎么翻,使用排序规则吧作用是对排序规则进行转换也就是转换成目标的排序规则(从源代码页转换到目标代码页),如果不选择这个选项,数据可能造成乱码或者错误.(4)复制所有目标(默认选项)如果你是想复制数据库级别,那你选上就是了.如果你只是想传输部分对象,那就取消这个选项,同时右边的选择对象(selectobjects)会亮起,里面可以设置具体的复制对象比如某几个表,存储过程,视图等,这里就不单独截图了,大家一看就知道的.(5)使用默认选项同样取消,右边的按钮Option会亮起,这里我觉得有必要单独说明一下,放后面了,请耐心收看.四配置复制选项(截图水平不高,图比较大,请见谅)(1)安全选项*复制数据库用户及角色*复制SQLServer登录*复制对象级别权限(copyobject-levelpermissions)前面两个选项非常有用,复制用户角色登录信息等到目标实例(如果和源实例不同),能很好的解决正常备份还原产生的孤立用户等问题复制对象级别权限:复制对象的权限设定到目标数据库(2)表选项复制索引,全文索引等,基本一看就知道用unicode生成脚本:使用unicode编码生成脚本(3)复制对象的时候加用括号标识,这个看上去似乎有点莫名其妙呵呵至少我是这么认为的五运行DTS包按顶上那个小三角启动dts包六定期调度DTS包如果你的DTS包需要定期执行,可以借助作业,方法很简单启动windows的Agent服务后,右键单击包名(保存后),选SchedulePackage,弹出窗口如下,方法这边就不罗嗦了,一看就知道结束语DTS/SSIS是相当强大的管理(开发)工具,就拿数据库复制来说,如果对DTS操作稍微熟悉的话,复制数据库估计1分钟时间就可以设定完毕.可以节省大量的时间,并且可以实现部分对象复制,相关用户传输等.当然缺点也明显,双方不能互访的时候没法完成调度,这时候就只能借助备份还原

保存存为结构化存储文件。

(如果在已经存在的SQL Server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,

-a packet_size

选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->

-C code_page

四、ORACLE数据库里表导入SQL Server数据库

将忽略要导入的数据文件中计算列或 timestamp 列的值,SQL Server 2000 自动赋值。如果数据文件不包含表中的计算列或 timestamp 列的值,可用格式文件指定应在导入数据时跳过表中的计算列和 timestamp 列;SQL Server 将自动为该列赋值。

保存、调度和复制包->

大容量复制表或视图到磁盘时所用数据文件的完整路径。当将数据大容量复制到 SQL Server 时,此数据文件包含将复制到指定表或视图的数据。当从 SQL Server 大容量复制数据时,该数据文件包含从表或视图复制的数据。路径可以有 1 到 255 个字符。

调用导入/导出工具->弹出数据转换服务导入/导出向导窗口->下一步->

-o output_file

三、SQL Server存储过程或用户定义的函数导出导入

数据包大小的增加能够提高大容量复制操作的性能。如果要求一个较大的数据包而得不到,则使用默认设置。bcp 生成的性能统计显示出所使用数据包的大小。

制定列分割符->逗号->下一步->

是返回一个结果集的 Transact-SQL 查询。如果查询返回多个结果集,例如指定 COMPUTE 子句的 SELECT 语句,只有第一个结果集将复制到数据文件,随后的结果集被忽略。使用双引号引起查询语句,使用单引号引起查询语句中嵌入的任何内容。在从查询中大容量复制数据时,还必须指定 queryout。

最后按确定按钮。

Query

在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务->

指定响应文件的名称,使用交互模式执行大容量复制时,响应文件包含对每一字段命令提示问题的响应。

如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,

使用 SQL Server 6.0 或 SQL Server 6.5 数据类型执行大容量复制操作。仅为保持向后兼容性。改为使用 �V 选项。

保存->正在生成SQL脚本->成功

-E

制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->

指定要大容量复制的第一行的序数。默认值是 1,表示在指定数据文件的第一行。 -L last_row

查询窗口里会出现执行后的消息(有时候可能因为存储过程和用户定义的函数之间有一定的依赖关系,会报一些错。

view_name

数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->

说明 Microsoft SQL Server 6.5 中的 bcp 实用工具不支持大容量复制到包含 sql_variant 或 bigint 数据类型的表。

[转自:]

-U login_id

选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->

是将数据复制到 SQL Server 时 (in) 的目的表名,以及从 SQL Server 复制数据时 (out) 的源表名。

但是常规文本编辑器能打开的文件,文件类型选全部)->下一步->

使用格式文件

在SQL Server企业管理器里选中目的数据库 ,按鼠标右键,选所有任务->导入数据->

-b batch_size

如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。

方法-:用BCP命令

数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->

表或视图所有者的名称。如果执行大容量复制操作的用户拥有指定的表或视图,则 owner 是可选的。如果没有指定 owner 并且执行大容量复制操作的用户不拥有指定的表或视图,则 Microsoftreg; SQL Server™ 2000 将返回错误信息并取消大容量复制操作。

如果要更改导入时间的年月信息的表名,例如table_0113到原来的表名,

指定字段终止符。默认的字段终止符是 。使用此参数替代默认字段终止符。

1、在目的SQL Server数据库服务器上安装ORACLE Client软件或者ORACLE ODBC Driver.

table_name

选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->

DTS 导入/导出向导

标志种子和not null的约束可以继承过来。

使用 Unicode 字符执行大容量复制操作。此选项不提示输入每一字段;它使用 nchar 作为存储类型,不带前缀,作为字段分隔符,作为行终止符。不能在 SQL Server 6.5 版或更早版本中使用。

选择源表和视图->修改目的表名为刚才创建的表名->转换(在目的表中追加行) ->下一步->

使用 DTS 导入/导出向导,可以连接到下列数据源:

选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->

代码页值 描述

③、把文本文件导入目的SQL Server数据库

ACP ANSI/Microsoft Windowsreg; (ISO 1252)。

其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;

-r row_term

服务器(可选择目标局域网内能访问到的所有SQL Server服务器)->

owner

正在执行包->图形界面显示表到文本文件的步骤和状态->完成

使用 bcp 和 BULK INSERT

注意:源表上的建的索引和主键约束不能用上面介绍的1和2方法转移过来,还需要手工来建索引和主键。

指定在大容量复制操作取消之前可能产生的错误的最大数目。bcp 无法复制的每一行都将被忽略并计为一个错误。如果没有包括该选项,则默认为 10。

导入数据->弹出数据转换服务导入/导出向导窗口->下一步->

-k

第①步生成的文本文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。

bcp 实用工具

保存(可以不选)-> [保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成

指定的表或视图所在数据库的名称。如果未指定,则为用户默认数据库。

按鼠标右键,选所有任务->生成SQL脚本->确定->在自己的电脑硬盘中生成一个自定义的*.sql文件->

保存 DTS 包

2.备份 选数据库-完全,

-S server_name[instance_name]

新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。

说明 可以复制从 SQL 查询中获得的数据。SQL 查询可以包含来自同一数据库或分布式查询中的多个表的联接。作为整个进程的一部分,如果不存在任何表,则 DTS 导入/导出向导会自动为您创建目的表。

复制下新窗口内创建表名的sql语句

使用 DTS 导入/导出向导,可以转换索引、视图、角色、存储过程和引用完整性约束等数据库对象。有关更多信息,请参见复制 SQL Server 对象任务。

还原备份集->数据库-完全

并行数据装载

把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。

语法

保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->

-6

服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->

指定 bcp 使用网络用户的安全凭据,通过信任连接连接到 SQL Server。不需要 login_id 和 password。

目的数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->

在连接到源和目的之后,可以选择要导入或导出的数据,并可对要复制的数据应用各种转换。在大多数情况下,可以自动与源数据一起复制主键和外键约束。

重写 选重写现有媒体

下一篇:没有了