服务器 频道

SQL Server导出导入数据方法

  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_HOME\network\admin\tnsnames.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企业或者个人版数据库做中转。
  
0
相关文章