SQL Server高速导入数据分享
以下依次介绍这几种办法。
1.CTE
首先。我们看看什么是CTE。
公用表表达式(Common Table Expression)是SQL SERVER 2005版本号之后引入的一个特性。
CTE能够看作是一个暂时的结果集,能够在接下来的一个SELECT,INSERT,UPDATE,DELETE,MERGE语句中被多次引用。使用公用表达式能够让语句更加清晰简练。
CTE 与派生表相似,详细表如今不存储为对象,而且仅仅在查询期间有效。与派生表的不同之处在于。CTE 可自引用,还可在同一查询中引用多次。
很多其它请点击:http://technet.microsoft.com/zh-cn/library/ms190766(v=sql.105).aspx
示比例如以下:
USE AdventureWorks2008R2;
GO
-- Define the CTE expression name and column list.
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)
AS
-- Define the CTE query.
(
SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear
INTO #temp1
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
)
-- Define the outer query referencing the CTE name.
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear
INTO #temp2
FROM Sales_CTE
GROUP BY SalesYear, SalesPersonID
ORDER BY SalesPersonID, SalesYear;
GO
2.OpenRowSet/OpenDataSource
OpenRowSet和OpenDataSource都能够訪问远程的数据库,但详细表现上,二者还是有区别的。OpenDataSource 不使用链接的server名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。 而OpenRowSet 包括訪问 OLE DB 数据源中的远程数据所需的所有连接信息。
当訪问链接server中的表时,这样的方法是一种替代方法,而且是一种使用 OLE DB 连接并訪问远程数据的一次性的、特殊的方法。能够在查询的 FROM 子句中像引用表那样引用 OpenRowSet 函数。根据 OLE DB 提供程序的能力。还能够将 而OpenRowSet 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。虽然查询可能返回多个结果集,然而OPENROWSET 仅仅返回第一个。很多其它请点击:http://technet.microsoft.com/en-us/library/ms179856.aspx
示比例如以下:
--启用Ad Hoc Distributed Queries
EXEC SP_CONFIGURE 'show advanced options',1
RECONFIGURE
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1
RECONFIGURE
--使用OpenDataSource导入数据
INSERT INTO IMP_DATA.dbo.t_goods
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.12.0',
'Data Source="E:/Report1.txt";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$]
--使用完成后,切记关闭它。由于这是一个安全隐患
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
RECONFIGURE
EXEC SP_CONFIGURE 'show advanced options',0
RECONFIGURE
3.BULK INSERT
BULK INSERT同意用户以其指定的格式将数据文件导入到数据库表或视图中。很多其它请点击:http://msdn.microsoft.com/zh-cn/library/ms188365.aspx
示比例如以下:
--定义导入目的和导入源
BULK INSERT IMP_DATA.dbo.t_goods FROM 'E:/Report1.txt'
WITH (
--列分隔符
FIELDTERMINATOR = ',',
--行分隔符
ROWTERMINATOR = '\n'
)
4.bcp
bcp 有用工具能够在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 有用工具能够将大量新行导入 SQL Server 表。或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该有用工具不须要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。
很多其它请点击:http://msdn.microsoft.com/zh-cn/library/ms162802.aspx
示比例如以下:
--打开高级选项
EXEC SP_CONFIGURE 'show advanced options', 1;
RECONFIGURE;
--启用运行CMD命令
EXEC SP_CONFIGURE 'xp_cmdshell', 1;
RECONFIGURE; --指定导入目的和导入源
EXEC master..xp_cmdshell 'BCP IMP_DATA.dbo.t_goods in E:\report.txt -c -T'
5.Shell
Shell通过拼接插入字符串的方法非常灵活,而且出错较少。但插入的内容包括非常多非法字符的话会非常恼。
能够參考曾经写的文章:缺乏导入数据权限,SQL Server创建測试数据
最后,贴张前段时间做的图。导入数据总结:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanVzdGRi/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
Good Luck!
SQL Server高速导入数据分享的更多相关文章
- sql server 与 sql server compact 互相数据导入
从SQL Server 导出数据到 Sql Compact 使用 Sql Server Compact Tool box 从SQL Server Comapct 导出数据到 Sql Server 使 ...
- SQL Server 2005导入Excel表问题
EXCEL导入到SQL Server经常出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项” 原因: SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...
- 从SQL Server中导入/导出Excel的基本方法(转)
从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很 ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
- SQL Server 学习博客分享列表(应用式学习 + 深入理解)
SQL Server 学习博客分享列表(应用式学习 + 深入理解) 转自:https://blog.csdn.net/tianjing0805/article/details/75047574 SQL ...
- SQL SERVER 2008 误删数据且无全备恢复方法
原文:http://www.jb51.net/article/84932.htm SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至 ...
- Expression构建DataTable to Entity 映射委托 sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。 sql server 多行数据合并成一列 C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform
Expression构建DataTable to Entity 映射委托 1 namespace Echofool.Utility.Common { 2 using System; 3 using ...
- Sql Server系列:数据表操作
表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...
- 一个有趣的SQL Server 层级汇总数据问题
看SQL Server大V宋大侠的博客文章,发现了一个有趣的sql server层级汇总数据问题. 具体的问题如下: parent_id emp_id emp_nam ...
随机推荐
- 【洛谷3467/BZOJ1113】[POI2008]海报PLA-Postering(单调栈)
题目: 洛谷3467 分析: (ti jie shuo)这题是个单调栈经典题. 单调栈就是栈元素递增或递减的栈,这里只考虑递增.新元素入递增栈时,先将所有比它大的元素弹出,然后让新元素入栈,这样保证栈 ...
- Unity实现屏幕抖动效果(通过Camera Viewpoint实现)
由于游戏死亡时一般都需要屏幕抖一下下. 所以百度了下相关写法,发现方法很多~~~ 找来找去,找到个简单粗暴地,啥都不需要,一个脚本拖动到Camera上就可以了 略微修改了一点点,share一下 usi ...
- 【转】Java 集合系列02之 Collection架构
概要 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Collection是一个接口,它主要的两个分支是:List 和 Set. List和Set都是接 ...
- 用最简单的脚本完成supertab的基本功能并实现一个更加合理的功能
supertab是vim的一个出名的插件, 相信会vim的人没几个不知道的, 我在之前的<<vim之补全1>>中首先说明的也是它, supertab实现的功能简单的说就是用ta ...
- 搜索条件两个时间,通过php数组排序,保证select语句between时间 前小后大
//搜索条件两个时间,通过数组排序,保证select语句between时间 前小后大 $sort_array=[$_POST['clockDate1'],$_POST['clockDate2']]; ...
- 用Grunt进行CSS文件压缩
假设你的项目的CSS文件全部放在项目目录下名为css的文件夹中,现在将它压缩合并成一个名为main-min.css的文件,放在css-min文件夹下. (1)首先保证机器安装了node.js. (2) ...
- JAVA中EXTENDS 与 IMPLEMENT 区别
简单说: 1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements, ...
- Concurrency and Application Design
Concurrency and Application Design In the early days of computing, the maximum amount of work per un ...
- linux中快速查找文件
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...
- Uncaught TypeError: str.replace is not a function
在做审核页面时,点击审核通过按钮不执行 后来F12控制台查看发现有报错 是因为flisnullandxyzero未执行 然后找出这个方法,此方法为公共方法,将这个方法复制出来 然后使用console. ...