0

0

四种方法在SQLServer数据库中成批导入数据

php中文网

php中文网

发布时间:2016-06-07 15:06:56

|

1534人浏览过

|

来源于php中文网

原创

在软件项目实施的时候, 数据 导入 一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多 成批 导入 数据 的 方法 。有些项目实施顾问头疼的问题,在我们 数据 库 管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些 方法 ,让 数据 导

  在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多成批导入数据方法。有些项目实施顾问头疼的问题,在我们数据管理员眼中,是小菜一碟。现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些。
  第一:使用Select Into语句
  若企业数据都采用的是SQL Server数据的话,则可以利用Select Into语句来实现数据导入。Select Into语句,他的作用就是把数据从另外一个数据中查询出来,然后加入到某个用户指定的表中。
  在使用这条语句的时候,需要注意几个方面的内容。
  一是需要在目的数据中先建立相关的表。如想把进销存系统数据(SQLServer)中的产品信息表(Product)导入到ERP系统中的产品信息表(M_Product)中。则前期是在ERP系统的数据中已经建立了这张产品信息表。
  二是这种方法只复制表中的数据,而不复制表中的索引。如在进销存系统数据中的产品信息表中,在产品编号、产品种类等字段上建立了索引。则利用Select Into语句把数据复制到ERP系统的表中的时候,只是复制了数据内容的本身,而不会复制索引等信息。
  三是这条语句使用具有局限性。一般情况下,这只能够在SQL Server数据中采用。不过,对于SQL Server不同版本的数据,如2008或者2003,还都是兼容的。若需要导入的对象数据不是SQL Server的,则需要采用其他的方法
  四是采用这条语句的话,在目的表中必须不存在数据。否则的话,目的表中的数据会被清除。也就是说,这个语句不支持表与表数据的合并。在SQL Server中,有一条类似的语句,可以实现这个功能。这条语句就是:Insert Into。他的作用就是把另外一张表中的数据插入到当前表中。若用户想要的时表与表数据的合并,则可以采用这条语句。两者不能够混淆使用,否则的话,很容易导致数据的丢失。
  五是以上两条语句都支持兼容的不同类型的数据类型。如在原标中,某个字段的数据类型是整数型,但是在目的表中这个字段的数据类型则是浮点型,只要这个两个数据类型本来就兼容的,则在导入的时候,数据是允许的。
  第二:利用Excel等中间工具进行控制
  虽然第一种方法操作起来比较简单,但是其也有一些缺点。如他只支持同一种类型的数据;不能够对数据进行过多的干预等等。一般情况下,若用户原数据准确度比较高,不需要过多的修改就可以直接拿来用的话,则考试大就已采用第一种方式。
  但是,若在原数据中,数据的准确度不是很高,又或者,有很多数据是报废的。总之,需要对原数据数据进行整理,才能够使用的情况,考试大不建议先导入进去,再进行更改。考试大在遇到这种情况时,喜欢利用Excle作为中间工具。也就是说,先把数据中原数据中导到Excle中。有些数据,如Oracle数据,他不支持Excle格式。但是,我们可以把它导为CSV格式的文件。这种文件Excle也可以打得开。
  然后,再在Excle中,对记录进行修改。由于Excle是一个很强的表格处理软件,所以,其数据修改,要比在数据中直接修改来得方便,来得简单。如可以利用按时间排序等功能,把一些长久不用的记录清楚掉。也可以利用替换等功能,把一些不规范的字符更改掉。这些原来在数据中比较复杂的任务,在Excle等工具中都可以轻松的完成。
  等到表中的内容修改无误后,数据管理员就可以把Excle表格中的文件直接导入到SQL Server数据中。由于SQL Server与Excel是同一个父母生的,所以,他们之间的兼容性很好。在Sql Server中提供了直接从Excel文件中导入数据的工具。
  虽然这要借助中间工具导入数据,但是,因为其处理起来方便、直观,所以,考试大在大部分时候都是采用这种方式。
  第三:使用数据转换服务导入数据
  数据转换服务是SQL Server数据中提供的一个非常强大的工具。在SQLServer中,数据转换功能有一个图形用户接口,用户可以在图形界面中导入数据,并对数据进行相应的编辑。
  另外,数据转换服务还支持COM组件的编程接口。这也就是说,在前台应用程序开发的时候,可以直接调用数据转换服务。让用户通过前台应用系统,而不用在后台数据系统进行任何的操作,就可以把数据导入数据系统中去。在前台对数据系统进行导入,有一个明显的好处,就可以预先对数据的合法性进行检查。如可以利用VB等脚本语言对数据进行检验、净化和一定的转换,以符合目的数据的需要。
  如在员工信息表中的婚姻状况字段,在Oracle数据系统中,可能是用0或者1来表示婚姻状况。0表示未婚,1表示已婚。而在SQL Server数据中,则利用Y或者N来表示婚姻状况。Y表示已婚,N表示未婚。在导入数据的时候,若直接把Oracle数据表中的数据导入到SQL Server数据中,因为婚姻状况这个字段存储的内容类型不同,所以,不能够直接导。遇到这种情况的话,则就可以在导入数据之前,先利用脚本语言对数据类型进行验证。若不符合要求的,则可以通过脚本语言对数据进行一定的转换,把0转换为N,把1转换为Y等等。
  所以,有时候程序员在开发前台应用程序的时候,若要开发数据导入功能的话,我们都是建议采用这个数据转换服务。不但有现成的接口,而且,还可以对数据进行验证与一定程度的转换。另外,数据转换服务的数据导入效率非常的高。即使通过前台程序调用,其性能也比其他方法在同等条件下,要高一个档次。而且,随着数据量的增加,数据转换服务的优势会越来越明显。
  不过,在前台应用程序调用数据转换服务的时候,需要注意。数据转换服务提供的COM接口比较复杂,所以,前台程序调用数据转换服务的代码也比较复杂。若再加上一些脚本语言的话,可能处理起来更加的繁琐。故一般只有在大型系统上才会用到这个接口。若数据不多,否则不需要复杂验证与转换的话,利用这个接口是大刀小用,得不偿失。
  第四:异构数据之间的导入导出
  虽然第二种、第三种方式都可以完成异构数据之间数据导入导出作业。不过,在SQL Server中,还提供了另外一种解决方案。即直接在SQL Server数据中连接到其他类型的数据上,然后采用Select Into等语句实现数据导入作业。
  在SQL Server中,提供了两个函数可以帮助我们实现对非SQL Server数据的连接。这两个函数分别为Opendatesource与Openrowset。他们的功能基本相同,只是在细节上有所差异。
  如Opendatesource这个函数至能够打开源数据的表和视图,而不能够对其进行过滤。若用户只想把源表中的部分数据导入到SQL Server数据的表中,则不能对源表直接进行过滤。过滤的动作需要在SQL Server数据中进行。而Openrowset这个函数,可以在打开对方数据的表或者视图的时候,直接利用Where等条件限制语句对记录进新过滤。为此,在实际应用中,还是Openrowset这个函数使用的频率比较高。
  不过由于其需要用户写复杂的参数,而且,又不能够提供复杂的数据验证功能,所以在实际工作中用的并不是很多。在一些小的应用系统中,偶尔还可以见到其的踪影。在一些大的成熟的商业软件中,很少采用这种方式,对数据进行导入
  有时候,选择多了,用户反而不知道如何下手。考试大平时最喜欢采用的是第二种处理方式。他比较直观,而且,可以对数据进行成批的更改与整理。但是,其缺陷就是效率比较低,特别是Excle软件对于处理大量记录的时候,速度比较慢。若这种方式行不通的话,则考试大比较倾向于采用数据转换的处理方式。这个操作起来虽然比较复杂,但是,其可以提供比较复杂的验证,而且可以在图形化的界面中对数据进行修改,同时效率也比较高。


ps:文章摘自http://www.233.com/ncre/three/db/fudao/20090225/084918877.html

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

2

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

80

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

187

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

339

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

116

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

180

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

31

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

81

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

Go 教程
Go 教程

共32课时 | 6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号