C++----调用bcp命令向Sql Server导入文本信息

得了...还是中文吧...写英的除了我没人愿意看...

今天写一点最近做的一个东西中得到的一个方法...

 需求:服务器在运行过程中会产生Log文件,记录在日常工作中的各种操作,现在的工作是需要根据这个日志文件进行分析,分析出一些在日常工作中的信息。

思路:要分析数据,最好的办法莫过于将数据导入数据库,然后对数据库里的数据进行分析。

但是如果你试图通过读取文件的方法将数据一条一条的读取然后insert到数据库中...

~~~mygod我转40w条数据得一个多小时...没有哪个客户有这个耐心,也会耽误你自己的时间

那么,如果将一个文本文件导入数据库呢...

数据库提供了一个导入导出文本文件的工具,你当然可以直接使用

但如果在软件例如在C++ Builder里使用呢

我们先尝试在查询分析器中使用

我查阅出的方法是使用bcp...

语句:

EXEC master..xp_cmdshell 'bcp DateBaseName..TableName in "FilePath" -c -t"CompartSign" -S"ServerName" -U"UserName" -P"Password"'

当然还有别的一些参数,具体可以参阅Sql帮助文档,或者在运行cmd后直接敲bcp查看帮助

bcp实际上是Windows内部的命令,应该是DOS下的,具体我也不是很清楚

看这条语句:EXEC master..xp_cmdshell

意思是调用操作系统的 xp_cmdshell运行后面的语句

-t"CompartSign"  是表示这个文本文件是用什么分隔符隔开的

然后其实还可以用其他的,例如你可以写一个格式文件然后调用

具体如何我也不知道了...

ai其实我也想去学,但时间问题解决了这个问题之后要迅速进入下一个...就留待以后再说了

然后如何在C++ Builder里运行呢...

我是使用的这样的方法:

我创建了一个bat文件,然后将语句写入这个文件

注意:这里的bat里写入的文件仅为

bcp DateBaseName..TableName in "FilePath" -c -t"CompartSign" -S"ServerName" -U"UserName" -P"Password"

因为你直接执行bat就是在Windows里,不像在Sql里执行需要调用操作系统的命令

然后ShellExecute执行这个bat文件就ok了

插入40w条数据大概是在7分钟

效率高很多了~~~

可我还是不是很满意...暂时先这样吧~

好像还有其他的方法的,用什么bulk好像...

today~~over

PS:调用dos命令不分软件的~~都是大致相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值