程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> C++----調用bcp命令向Sql Server導入文本信息

C++----調用bcp命令向Sql Server導入文本信息

編輯:關於SqlServer

得了...還是中文吧...寫英的除了我沒人願意看...

今天寫一點最近做的一個東西中得到的一個方法...

 需求:服務器在運行過程中會產生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命令不分軟件的~~都是大致相同

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved