BULK INSERT如何将大量数据高效地导入SQL Server
转载自:http://database.51cto.com/art/201108/282631.htm
BULK INSERT如何将大量数据高效地导入SQL Server
本文我们详细介绍了BULK INSERT将大量数据高效地导入SQL Server数据库的方法,希望本次的介绍能够对您有所帮助。
在实际的工作需要中,我们有时候需将大量的数据导入到数据库中。这时候我们不得不考虑的就是效率问题。本文我们就介绍了一种将大量数据高效地导入SQL Server数据库的方法,该方法是使用BULK INSERT来实现的,接下来就让我们来一起了解一下这部分内容。
源数据(文本文件)
下载了大量的股票历史数据,都是文本格式的:

每个文件第一行包含股票代码,股票名称,数据类型.第二行是数据列的名称:

数据表
在数据库中新建了一个数据表TestStock,并设置以下字段,但没有关于"成交额"的字段,因为以后的计算不会用到这个数据。另外这里关于价格的字段没有使用money数据类型,decimal足矣。

编写格式化文件
当前数据的格式化文件为:
- <?xmlversionxmlversion="1.0"?>
- <BCPFORMAT
- xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <RECORD>
- <FIELDIDFIELDID="1"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="2"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="3"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="4"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="5"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="6"xsi:type="CharTerm"TERMINATOR=","/>
- <FIELDIDFIELDID="7"xsi:type="CharTerm"TERMINATOR="\r\n"/>
- </RECORD>
- <ROW>
- <COLUMNSOURCECOLUMNSOURCE="1"NAME="Date"xsi:type="SQLDATE"/>
- <COLUMNSOURCECOLUMNSOURCE="2"NAME="OpenPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/>
- <COLUMNSOURCECOLUMNSOURCE="3"NAME="HighPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/>
- <COLUMNSOURCECOLUMNSOURCE="4"NAME="LowPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/>
- <COLUMNSOURCECOLUMNSOURCE="5"NAME="ClosePrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/>
- <COLUMNSOURCECOLUMNSOURCE="6"NAME="Volumn"xsi:type="SQLINT"/>
- </ROW>
- </BCPFORMAT>
暂且先保存在C盘目录下吧,文件名叫BCPFORMAT.xml
编写BULKINSERT语句:
- BULKINSERTTestStock
- FROM'C:\SH600475.txt'
- WITH(
- FORMATFILE='C:\BCPFORMAT.xml',
- FIELDTERMINATOR=',',
- ROWTERMINATOR='\r\n')
执行BULKINSERT的速度很快,结果如下:

同样的效果,如果从文本中读一行记录,执行一次INSERTINTO语句的话,需要10秒左右,由此可见BULKINSERT的高效。
关于使用BULK INSERT将大量数据导入SQL Server数据库的知识就介绍到这里了,希望本次的介绍能够对您有所帮助。
BULK INSERT如何将大量数据高效地导入SQL Server的更多相关文章
- C#将excel数据按照需求导入Sql server遇到的问题(参考而已)
1.千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的) 我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出 ...
- Bulk Insert:将文本数据(csv和txt)导入到数据库中
将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...
- 使用“bulk insert ”进行批量插入数据
本文转自csdn中文章,再次感谢他给我们分享. Bulk Insert命令详细 BULK INSERT以用户指定的格式复制一个数据文件至数据库表或视图中.语法: BULK INSERT [ [ 'da ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- Excel表数据导入Sql Server数据库中
Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...
- C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
作者: Aicken(李鸣) 来源: 博客园 发布时间: 2010-09-08 15:00 阅读: 4520 次 推荐: 0 原文链接 [收藏] 摘要: ...
- 将Excel导入SQL Server 只能导入数字,其他数据变为NULL怎么解决?
先新建一个TXT文件,把数据粘贴进去 再新建一个Excel文件,在菜单栏中选Data再选From Text 找到txt文件,点import 一定要选Text 点Finish,点OK. 接下来在往数据库 ...
- 用代码将Excel数据导入Sql Server
这里直接用小例子说明. 1.打开VS2010—>文件—>新建—>网站,选择ASP.NET空网站并设置存放路径以创建空网站.(我这里路径设置为D:\excelEduceToSql) 2 ...
- 不同服务器数据库之间的数据定时同步到sql server (支持mysql,oracle数据库同步到sql server)
1,在目标数据库新增服务器对象->连接到服务器->新建服务器连接 2,编写数据同步业务PROC ALTER PROC TestProc AS BEGIN --打开完全事物回滚 SET XA ...
随机推荐
- sql server代理中作业执行SSIS包失败
RT,执行失败了,总是只提示一句“以xxxx用户身份执行失败”,很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssi ...
- ORA-00911: invalid character
出错原因:sql语句后面加了中文状态下的分号. 解决办法:改成英文状态下的分号即可. --本篇文章参考自:http://blog.sina.com.cn/s/blog_5b2a1aee0100n4oy ...
- 华为 oj 表示数字(代码有参考)理解算法设计
虽然是初级题目,但是 也不是太容易就做出来的 还是用c++ 好些 因为c++ string 是可以存储到缓冲区的, 字符串长度可以变化 参考了某神的代码 和我的思路一样 ,就拿来主义了,挺经典的一道面 ...
- Sql省市三级联动一张表
CREATE TABLE [dbo].[region]( [region_id] [int] NULL, [region_name] [varchar](50) COLLATE Chinese_PRC ...
- Guava API学习之Ordering犀利的比较器 编辑
Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强.它非常容易扩展,可以轻松构造复杂的comparator,然后用在 ...
- 解决表格里面使用text-overflow后依旧不能隐藏超出的文本
解决表格里面使用text-overflow后依旧不能隐藏超出的文本 来源: http://blog.csdn.net/colinmuxi/article/details/9069595 (非原创,自 ...
- Excel文件数据保存到SQL中
1.获取DataTable /// <summary> /// 查询Excel文件中的数据 /// </summary> /// <param name="st ...
- BufferedInputStream
package file; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStrea ...
- Kafka笔记--常用指令(删除topic)
删除topic 首先需要设置server.properties,最后一行添加 delete.topic.enable=true 然后运行> ./kafka-topics.sh --zookeep ...
- 为什么memset的第二个参数不把int替换成char
memset是一个经常被用来初始化数组的函数,其定义如下: 1 void * memset ( void * ptr, int value, size_t num ); 它的效果大致是把以ptr为起始 ...