源数据 (文本文件)

下载了大量的股票历史数据, 都是文本格式的:

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

数据表

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

编写格式化文件

编写格式化文件请参考:

1. XML 格式化文件的架构语法

2. XML 格式化文件示例

当前数据的格式化文件为:

<?xml version="1.0"?>
<BCPFORMAT
xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><RECORD><FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="4" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="5" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="6" xsi:type="CharTerm" TERMINATOR="," /><FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\r\n" /></RECORD><ROW><COLUMN SOURCE="1" NAME="Date" xsi:type="SQLDATE"/><COLUMN SOURCE="2" NAME="OpenPrice" xsi:type="SQLDECIMAL" PRECISION="6" SCALE="2" /><COLUMN SOURCE="3" NAME="HighPrice" xsi:type="SQLDECIMAL" PRECISION="6" SCALE="2" /><COLUMN SOURCE="4" NAME="LowPrice" xsi:type="SQLDECIMAL" PRECISION="6" SCALE="2" /><COLUMN SOURCE="5" NAME="ClosePrice" xsi:type="SQLDECIMAL" PRECISION="6" SCALE="2" /><COLUMN SOURCE="6" NAME="Volumn" xsi:type="SQLINT"/></ROW>
</BCPFORMAT>

暂且先保存在C盘目录下吧, 文件名叫BCPFORMAT.xml.

编写BULK INSERT语句

关于BULK INSERT的语法请参考这篇文档, 这里用到的参数主要为FORMATFILE, FIELDTERMINATOR和ROWTERMINATOR.

BULK INSERT TestStock

FROM 'C:\SH600475.txt'

WITH (

FORMATFILE = 'C:\BCPFORMAT.xml',

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\r\n' )

本来也应该用到 FIRSTROW 这个属性的, 因为我想跳过文本的前两行, 毕竟第三行开始才是真正的数据. 但我遇到了和这个帖子一样的问题, 就是设置 FIRSTROW 为3的时候, 实际上却从文本第5行的数据开始录入, 当我设置 FIRSTROW 为1(本想这次应该是从第文本3行开始录入吧), 结果报错, 说一行数据格式有问题, 后来我处理了一下数据: 在BULK INSERT语句执行前, 先删除文本的前两行, 并且在BULK INSERT语句中不指定 FIRSTROW 属性, 希望有人能告诉我这边最好应该怎么做...

执行

BULK INSERT的速度很快, 我这个例子几乎就不花时间, 而且达到了我想要的效果:

同样的效果, 如果从文本中读一行记录, 执行一次 INSERT INTO 语句的话, 需要10秒左右, 由此可见 BULK INSERT的高效.

参考

1. http://msdn.microsoft.com/zh-cn/library/ms188365.aspx

2. http://msdn.microsoft.com/zh-cn/library/ms189327.aspx

3. http://msdn.microsoft.com/zh-cn/library/ms191234.aspx

4. http://stackoverflow.com/questions/1029384/sql-bulk-insert-with-firstrow-parameter-skips-the-following-line

本文链接: http://www.cnblogs.com/technology/archive/2011/08/10/2133734.html

转载于:https://www.cnblogs.com/technology/archive/2011/08/10/2133734.html

使用BULK INSERT高效导入大量数据到SQL Server数据库相关推荐

  1. 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)

    原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/11/11/1331060.html 如果你需要在程序中批量插入成千上万行的数据,你会怎么编写 ...

  2. 将DataTable 数据插入 SQL SERVER 数据库

    原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...

  3. 使用python采集MDB数据到SQL server数据库

    目录 一.读取MDB数据 二.转化为DataFrame数据格式 三.导入SQL server 一.读取MDB数据 import pypyodbc p_path = r'专题3.3 结构化信息采集\da ...

  4. 实例讲解用.NET技术将Excel表格中的数据导入到特定的SQL Server数据库中

    由于管理需要,公司决定上一套信息管理系统,将原来的用Excel所做的记录用管理系统来管理.通过努力,我终于作了一套类似<牛腩新闻发布系统>的客户信息管理系统.可原来的Excel中的数据该如 ...

  5. asp.net C# 实现上传Excel文件导入数据到SQL Server 数据库

    前台代码,有点简单: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&q ...

  6. C#快速导入海量XML数据至SQL Server数据库

    #region 将Xml中的数据读到Dataset中,然后用SqlBulkCopy类把数据copy到目的表中 using (XmlTextReader xmlReader = new XmlTextR ...

  7. 在SQL Server数据库之间进行数据导入导出

    来源:http://kb.cnblogs.com/page/94464/ 在SQL Server数据库之间进行数据导入导出 (1).使用SELECT INTO导出数据 在SQL Server中使用最广 ...

  8. SQL Server 数据库之导入导出数据

    导入导出数据 1. 概述 2. 导入 SQL Server 数据表 3. 导入其他数据源的数据 4. 导出 SQL Server 数据表 1. 概述 导入数据也是数据库操作中使用频繁的功能,SQL S ...

  9. VS用SSIS实现SQL Server数据库与Excel表格数据的相互导入

    VS用SSIS实现SQL Server数据库与Excel表格数据的相互导入 打开Visual Studio 2019,新建Integration Services项目 拖一个数据流任务到控制流中 切换 ...

最新文章

  1. 软件测试相关概念与分类
  2. JDK 9早期版本安装后的Windows注册表清理
  3. 科目三电子路考易错细节总结
  4. Python——创建文件data.txt,共100000行,每行存放一个1~100之间的整数
  5. tf.gradients ---错误FetchargumentNonehasinvalidtype
  6. python查看数据大小_python 监控文件大小
  7. 自然语言处理(八)——语言模型性能评价
  8. 显卡 真假测试软件,Gpuinfo beta6 显示卡信息检测工具,主要改进 NV 假卡识别
  9. JavaGUI实现科学计算器
  10. 阿昌教你Linux密码忘记后如何重置
  11. 统计各种字符数量(包括汉字)
  12. 军火库(第一期):无线电硬件安全大牛都用哪些利器?
  13. win7下修改php.ini的配置路径
  14. 电子产品高温贮存试验的价格-第三方检测机构
  15. 3V, 256Mb MX25L25673GM2I-08G FLASH - NOR 存储器PDF
  16. 华师大 OJ 2876
  17. dreamweaver快捷方式
  18. 部署Ambari 2.7.5 + HDP3.1.5
  19. PHP 常用自定义函数
  20. IP和MAC地址绑定的好处和作用

热门文章

  1. 关于 无法打开chormdriver 因为无法验证开发者 的解决方案[已解决]
  2. cocos做飞机大战笔记【根据道具设置子弹】
  3. Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例
  4. WordPress搭建过程
  5. 【期末复习】带着问题看网络信息安全
  6. 计算机的基本组成 教案反思,《计算机系统组成》教学反思
  7. html实现鼠div的旋转,鼠标悬浮到div上,div进行360°旋转
  8. 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
  9. vue滚动屏幕使其菜单栏隐藏和显示
  10. 华为超融合FusionCube解决方案笔记