使用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 @   陋室  阅读(3462)  评论(20编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示