教你在SQL Server数据库中导入导出数据

时间:2008-12-09 14:42:00 

在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。

在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理。这三种方法各有其特点,下面就它们的主要特点进行比较。


一、使用方式的比较

1. 使用Transact-SQL进行数据导入导出

我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。



SELECT * INTO table2 FROM table1       
--table1和table2的表结构相同
INSERT INTO table2 SELECT * FROM table3
--table2和table3的表结构相同

当在异构数据库之间的进行数据导入导出时,情况会变得复杂得多。首先要解决的是如何打开非SQL Server数据库的问题。

在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。它们的功能基本上相同,不同之处主要有两点。

(1) 调用方式不同。

OPENDATASOURCE的参数有两个,分别是OLE DB Provider和连接字符串。使用OPENDATASOURCE只相当于引用数据库或者是服务(对于SQL Server、Oracle等数据库来说)。要想引用其中的数据表或视图,必须在OPENDATASOURCE(...)后进行引用。

在SQL Server中通过OPENDATASOURCE查询Access数据库abc.mdb中的table1表



SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security
Info=False')...
table1

OPENROWSET相当于一个记录集,可以将直接当成一个表或视图使用。

在SQL Server中通过OPENROWSETE查询Access数据库abc.mdb中的table1表



SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'abc.mdb';
'admin';'','SELECT * FROM table1')

标签:
0
投稿

猜你喜欢

  • python实现发送邮件

    2021-08-06 04:33:28
  • 关于python中time和datetime的区别与用法

    2022-07-15 00:54:17
  • go GCM gin中间件的加密解密文件流处理

    2024-04-26 17:32:36
  • opencv+python识别七段数码显示器的数字(数字识别)

    2022-03-03 00:01:51
  • 详解Python中的静态方法与类成员方法

    2022-08-02 23:30:16
  • Go使用sync.Map来解决map的并发操作问题

    2024-04-29 13:05:57
  • python利用wx实现界面按钮和按钮监听和字体改变的方法

    2023-10-26 17:34:24
  • MySQL 客户端不输入用户名和密码直接连接数据库的2个方法

    2024-01-14 05:30:41
  • Python字符串函数strip()原理及用法详解

    2021-12-01 12:08:12
  • windows系统中Python多版本与jupyter notebook使用虚拟环境的过程

    2022-11-28 13:24:01
  • DOM基础教程之模型中的模型节点

    2024-06-05 09:55:35
  • python里运用私有属性和方法总结

    2023-03-29 15:33:57
  • Python PO设计模式的具体使用

    2023-10-31 18:47:38
  • JavaScript实现简易轮播图最全代码解析(ES5)

    2024-04-16 10:40:22
  • ASP.NET MVC4入门教程(五):从控制器访问数据模型

    2024-06-05 09:25:42
  • 2008圣诞节网站特色Logo不完全点评

    2008-12-25 18:35:00
  • Python代理IP爬虫的新手使用教程

    2021-09-27 09:27:59
  • TensorFlow可视化工具TensorBoard默认图与自定义图

    2023-03-03 06:53:22
  • MySQL8新特性:降序索引详解

    2024-01-14 10:03:43
  • 日常收集整理的Git常用命令

    2022-10-03 08:12:40
  • asp之家 网络编程 m.aspxhome.com