SQL Server导出导入数据方法
一、导出导入SQL Server里某个数据库
1. 在SQL Server企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。 2.备份 选数据库-完全, 目的 备份到 按添加按钮 文件名 在SQL Server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak) 重写 选重写现有媒体 最后按确定按钮。 如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。 3.通过FTP或者remote desktop或者pcanywhere等方法 把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。 4.目的SQL Server数据库如果还没有此数据库,先创建一个新的数据库; 然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库 还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定 还原备份集->数据库-完全 最后按确定按钮。完全的数据库导入成功了。 (如果在已经存在的SQL Server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败, 可以去看 ->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill 进程号杀掉这些锁, 然后再做还原) 注意:如果在原有的目的SQL Server数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库, 其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。
二、导出导入
SQL Server
里某个表
1.
没有防火墙,同一个局域网里或不在同一个局域网里
,
但通过
Internet
可以互相访问
在
SQL Server
企业管理器里选中目的数据库
,按鼠标右键,选所有任务
->
导入数据
->
弹出数据转换服务导入
/
导出向导窗口
->
下一步
->
选数据源
->
数据源(用于
SQL Server
的
Microfost OLE DB
提供程序)
->
服务器
(
可选择局域网内能访问到的所有
SQL Server
服务器
,
或者直接输入
IP
地址
)->
选择使用
windows
身份验证还是使用
SQL Serve
身份验证
(
输入数据库的用户名和密码
)->
数据库
(
可选择上面选中
SQL Server
服务器上所有权限范围内的数据库
)->
下一步
->
选择目的
->
目的(用于
SQL Server
的
Microfost OLE DB
提供程序)
->
服务器
(
默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有
SQL Server
服务器
,
或者直接输入
IP
地址
)->
目的数据库
(
可选择上面选中
SQL Server
服务器上所有权限范围内的数据库
)->
下一步
->
制定表复制或查询
->
选从源数据库复制表和视图
(
也可以选择用一条查询指定要传输的数据
)->
下一步
->
选择源表和视图
->
在要导入的表和视图前面选中源
->
目的出现同样的表名
(
可以手工修改成别的表名
)->
转换
->
列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,
并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项
->
确定
->
下一步
->
保存、调度和复制包
->
时间
->
立即运行(如果要实现隔一段时间自动导出导入数据,选调度
DTS
包以便以后执行)
->
保存
(
可以不选
)->[
保存
DTS
包
(
如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,
存到
SQL Server
即可,保存的时候要输入
DTS
的包名及详细描述
)->
下一步
-> ]->
完成
正在执行包
->
图形界面显示创建表及插入记录的步骤和状态
->
完成
2.
经过防火墙,不在同一个局域网里
①
、导出表里的数据到文本文件:
在
SQL Server
企业管理器里选中目的数据库,按鼠标右键,选所有任务
->
导入数据
->
弹出数据转换服务导入
/
导出向导窗口
->
下一步
->
选数据源
->
数据源(用于
SQL Server
的
Microfost OLE DB
提供程序)
->
服务器
(
可选择局域网内能访问到的所有
SQL Server
服务器
)->
选择使用
windows
身份验证还是使用
SQL Serve
身份验证
(
输入数据库的用户名和密码
)->
数据库
(
可选择上面选中
SQL Server
服务器上所有权限范围内的数据库
)->
下一步
->
选择目的
->
目的
(
文本文件
)->
文件名
(
在自己的电脑硬盘中生成一个自定义的文本文件
) ->
下一步
->
制定表复制或查询
->
选从源数据库复制表和视图
(
也可以选择用一条查询指定要传输的数据
)->
下一步
->
选择目的文件格式
->
源
(
选择要导出的表
)->
用默认的带分隔符
->
选第一行包含有列名称选项
->
下一步
->
保存、调度和复制包
->
时间
->
立即运行(如果要实现隔一段时间自动导出到文本文件,选调度
DTS
包以便以后执行)
->
保存
(
可以不选
)-> [
保存
DTS
包
(
保存的时候要输入
DTS
的包名及详细描述
)->
下一步
->]->
完成
正在执行包
->
图形界面显示表到文本文件的步骤和状态
->
完成
如果生成的文本文件大于
1M
,要用压缩工具压缩后再到
Internet
上传输。
②
、通过
FTP
或者
remote desktop
或者
pcanywhere
等方法把
第
①
步生成的文本文件或者其压缩后的文件传到目的
SQL Server
数据库,如果有压缩要解压。
③
、把文本文件导入目的
SQL Server
数据库
直接把文本文件导入目的
SQL Server
数据库里跟文本文件同名的新表名时,默认的会把所有字段类型都变成字符串。
所以我们要这样做:
在源
SQL Server
数据库上先生成创建表的
sql
语句
在
SQL Server
查询分析器里
->
选中源数据库里表名
->
按右键
->
在新窗口中编写对象脚本
->
创建
->
复制下新窗口内创建表名的
sql
语句
到目标
SQL Server
数据库上查询分析器里执行创建表名的
sql
语句,生成空表结构。
(
如果已经存在这样的表名,修改建表的
sql
语句,在表名后面加上导入时间的年月信息,例如
table_0113)
调用导入
/
导出工具
->
弹出数据转换服务导入
/
导出向导窗口
->
下一步
->
选数据源
->
数据源(文本文件)
->
文件名
(
已传到目的
SQL Server
数据库下要导入的文本文件,后缀可以不是
*.txt
,
但是常规文本编辑器能打开的文件,文件类型选全部
)->
下一步
->
选择文件格式
->
用默认的带分隔符
->
选第一行包含有列名称选项
->
下一步
->
制定列分割符
->
逗号
->
下一步
->
选择目的
->
目的
(
用于
SQL Server
的
Microfost OLE DB
提供程序
)->
服务器
(
可选择目标局域网内能访问到的所有
SQL Server
服务器
)->
选择使用
windows
身份验证还是使用
SQL Serve
身份验证
(
输入数据库的用户名和密码
)->
数据库
(
可选择上面选中
SQL Server
服务器上所有权限范围内的数据库
)->
下一步
->
选择源表和视图
->
修改目的表名为刚才创建的表名
->
转换
(
在目的表中追加行
) ->
下一步
->
保存、调度和复制包
->
时间
->
立即运行(如果要实现隔一段时间自动把文本文件导入,选调度
DTS
包以便以后执行)
->
保存
(
可以不选
)-> [
保存
DTS
包
(
保存的时候要输入
DTS
的包名及详细描述
)->
下一步
->]->
完成
正在执行包
->
图形界面显示文本文件到表的步骤和状态
->
完成
如果要更改导入时间的年月信息的表名,例如
table_0113
到原来的表名,
在企业管理器里把原来的表名改成
table_old_0113
,
table_0113
改名成
table
。
这会对应用程序里频繁访问的表照成一定的中断。
注意:源表上的建的索引和主键约束不能用上面介绍的
1
和
2
方法转移过来,还需要手工来建索引和主键。
标志种子和
not null
的约束可以继承过来。
导入视图时会把源视图里所有的真实数据导入成一个新表,而不是视图。
三、
SQL Server
存储过程或用户定义的函数导出导入
1
、导出存储过程或用户定义的函数成
*.sql
文件
在
SQL Server
企业管理器里选中源数据库,
存储过程
->
单选或者多选中要转移的存储过程
->
用户定义的函数
->
单选或者多选中要转移的函数
->
按鼠标右键,选所有任务
->
生成
SQL
脚本
->
确定
->
在自己的电脑硬盘中生成一个自定义的
*.sql
文件
->
保存
->
正在生成
SQL
脚本
->
成功
2
、如果目的数据库经过防火墙,不在同一个局域网里,
要通过
FTP
或者
remote desktop
或者
pcanywhere
等方法把第
1
步生成的
*.sql
文件传到目的
SQL Server
数据库服务器上。
3
、用查询分析器进入
SQL Server
目的数据库,
从菜单里选文件
->
打开
->
打开查询文件
->
选中第
1
步生成的
*.sql
文件
->
点执行查询的绿色倒三角型快捷键
->
查询窗口里会出现执行后的消息(有时候可能因为存储过程和用户定义的函数之间有一定的依赖关系,会报一些错。
最好先执行用户定义的函数的
*.sql
文件,再执行存储过程的
*.sql
文件)
四、
ORACLE
数据库里表导入
SQL Server
数据库
1
、在目的
SQL Server
数据库服务器上安装
ORACLE Client
软件或者
ORACLE ODBC Driver.
在
$ORACLE_HOMEnetworkadmintnsnames.ora
里配置
ORACLE
数据库的别名
(service name)
。
具体配置方法可以参考本站文章
:客户端连服务器的注意事项 2
、在
WIN2000
或者
win2003
服务器
->
管理工具
->
数据源
(ODBC)->
系统
DSN
(本机器上
NT
域用户都可以用)
->
添加
->ORACLE ODBC Driver->
完成
-> data source name
可以自定义,我一般填
ORACLE
数据库的
sid
标志,
description
里可以填
ORACLE
数据库详细描述,也可以不填
-> data source service name
填第
1
步定义的
ORACLE
数据库别名
->OK
。
(用户
DSN
和文件
DSN
也可以类似配置,但使用的时候有一些限制)
3
、
SQL Server
的导入和导出数据工具里
->
选数据源
->
数据源(其它(
ODBC
数据源))
->
选第
2
步在
ODBC
里定义的系统
DSN source name
,用户名密码处填写
ORACLE
系统的用户名和密码
->
下一步
->
选择目的,选
SQL Server
数据库(跟上面第二点讲的一致,就不重复了)。
注意:在
ORACLE
表和
SQL Server
表之间
'
转换
'
那步很重要,
可以改变默认的字段数据类型,如
image->text,decimal->int
五、
SQL Server
数据库里表导入
ORACLE
数据库
方法一
.
导出目的选通过
ODBC
数据源里定义的
ORACLE
数据库
,
注意
ORACLE
里表名都是大写的
.
我一般在
ORACLE
这边先生成好表结构
,
再选择
SQL SERVER
源表往
ORACLE
目的表里追加数据
.
数据传输速度比方法二慢
.
方法二
.
从
SQL Server
数据库导入数据到
ORACLE
数据库可以选择用
Windows
下
ORACLE9i
企业或者个人版数据库做中转。
具体配置方法可以参考这两篇文章
: Oracle 异构服务实践 在ORACLE里设置访问多个SQL Server数据库
注意:
ORACLE
通过访问
SQL Server
的数据库链接时,用
select *
的时候字段名是用双引号引起来的。