zoukankan      html  css  js  c++  java
  • BULK INSERT如何将大量数据高效地导入SQL Server

    在实际的工作需要中,我们有时候需将大量的数据导入到数据库中。这时候我们不得不考虑的就是效率问题。本文我们就介绍了一种将大量数据高效地导入SQL Server数据库的方法,该方法是使用BULK INSERT来实现的,接下来就让我们来一起了解一下这部分内容。

    源数据(文本文件)

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

    BULK INSERT如何将大量数据高效地导入SQL Server

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

    BULK INSERT如何将大量数据高效地导入SQL Server

    数据表

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

    BULK INSERT如何将大量数据高效地导入SQL Server

    编写格式化文件

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

    1. <?xmlversionxmlversion="1.0"?> 
    2.  
    3. <BCPFORMAT 
    4.  
    5. xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
    6.  
    7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    8.  
    9. <RECORD> 
    10.  
    11. <FIELDIDFIELDID="1"xsi:type="CharTerm"TERMINATOR=","/> 
    12.  
    13. <FIELDIDFIELDID="2"xsi:type="CharTerm"TERMINATOR=","/> 
    14.  
    15. <FIELDIDFIELDID="3"xsi:type="CharTerm"TERMINATOR=","/> 
    16.  
    17. <FIELDIDFIELDID="4"xsi:type="CharTerm"TERMINATOR=","/> 
    18.  
    19. <FIELDIDFIELDID="5"xsi:type="CharTerm"TERMINATOR=","/> 
    20.  
    21. <FIELDIDFIELDID="6"xsi:type="CharTerm"TERMINATOR=","/> 
    22.  
    23. <FIELDIDFIELDID="7"xsi:type="CharTerm"TERMINATOR=" "/> 
    24.  
    25. </RECORD> 
    26.  
    27. <ROW> 
    28.  
    29. <COLUMNSOURCECOLUMNSOURCE="1"NAME="Date"xsi:type="SQLDATE"/> 
    30.  
    31. <COLUMNSOURCECOLUMNSOURCE="2"NAME="OpenPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/> 
    32.  
    33. <COLUMNSOURCECOLUMNSOURCE="3"NAME="HighPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/> 
    34.  
    35. <COLUMNSOURCECOLUMNSOURCE="4"NAME="LowPrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/> 
    36.  
    37. <COLUMNSOURCECOLUMNSOURCE="5"NAME="ClosePrice"xsi:type="SQLDECIMAL"PRECISION="6"SCALE="2"/> 
    38.  
    39. <COLUMNSOURCECOLUMNSOURCE="6"NAME="Volumn"xsi:type="SQLINT"/> 
    40.  
    41. </ROW> 
    42.  
    43. </BCPFORMAT> 

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

    编写BULKINSERT语句:

    1. BULKINSERTTestStock  
    2.  
    3. FROM'C:SH600475.txt'  
    4.  
    5. WITH(  
    6.  
    7. FORMATFILE='C:BCPFORMAT.xml',  
    8.  
    9. FIELDTERMINATOR=',',  
    10.  
    11. ROWTERMINATOR=' '

    执行BULKINSERT的速度很快,结果如下:

    BULK INSERT如何将大量数据高效地导入SQL Server

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

    关于使用BULK INSERT将大量数据导入SQL Server数据库的知识就介绍到这里了,希望本次的介绍能够对您有所帮助。

  • 相关阅读:
    杭州西郊千湖岛-天下第一秀水
    windows phone7 豆瓣FM
    wp7 中 HubTile控件自定义大小。
    wp7 HubTile
    Windows Phone 7之XNA游戏:重力感应
    WP7:模拟开始屏幕Tile漂动效果
    windows 8 项目
    手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
    windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放
    仿windows8 开始菜单 实现HubTileBase 以及仿鲜果联播实现 PulsingTile(脉冲磁贴)
  • 原文地址:https://www.cnblogs.com/shixunle/p/3334940.html
Copyright © 2011-2022 走看看