使用BCP 命令输入大量的数据

 由于前段时间做大数据量的导入程序.在做的时候遇到的问题.几万条的数据从Excel中导入到数据库中,速度是非常的慢,程序简直不能运行,后来就研究了BCP命令的方式进行导入.几十万的数据也就几十秒,很快,所以将自己的小成果给大家分享.当然,可能有很多可以完善的地方,大家共同努力吧
 

使用BCP 命令输入大量的数据

 

1:目的:将大两数据输入sql server 等数据库

2:方法:BCP命令

3:实现方式:

 Sql 语句:

bulk   insert T1 from 'C:"TxtFile2.txt'

WITH

(   FIELDTERMINATOR=',',

    ROWS_PER_BATCH=100,

    errorfile='c:"aa.csv',

    formatfile='C:"sql.fmt'

)

From 后面的源文件可以是txt 也可以是csv格式,两种格式的FIELDTERMINATOR一样都是’,’.

此外对于一张表,我可以只导入某些字段.这是我们必须用formatfile格式文件进行映射.文件的格式为”fmt”格式语法如下

<?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="," MAX_LENGTH="50" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>

    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="200" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>

    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=""r"n" MAX_LENGTH="50" />

 </RECORD>

 <ROW>

 <COLUMN SOURCE="1" NAME="id" xsi:type="SQLVARYCHAR"/>     

    <COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR"/>

    <COLUMN SOURCE="3" NAME="age" xsi:type="SQLINT"/>

 </ROW>

</BCPFORMAT>

注意TERMINATOR的设置.”,” 还是”"t”.txtcsv文件为”,”

Excel格式文件为”"t”.

目前已经通过了对txtcsv格式的导入,对于xls文件的导入,还在进一步的研究中

posted @ 2008-03-07 16:29  陋室  阅读(3459)  评论(20编辑  收藏  举报