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

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

    源数据(文本文件)

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

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

    数据表

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

    编写格式化文件

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

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

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

    编写BULKINSERT语句:

    BULKINSERTTestStock   FROM'C:SH600475.txt'   WITH(   FORMATFILE='C:BCPFORMAT.xml',   FIELDTERMINATOR=',',   ROWTERMINATOR='
    ') 

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


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

  • 相关阅读:
    Pascal's Triangle II
    Pascal's Triangle
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Populating Next Right Pointers in Each Node
    path sum II
    Path Sum
    [转载]小波时频图
    [转载]小波时频图
    [转载]Hilbert变换及谱分析
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234210.html
Copyright © 2011-2022 走看看