得了...還是中文吧...寫英的除了我沒人願意看...
今天寫一點最近做的一個東西中得到的一個方法...
需求:服務器在運行過程中會產生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命令不分軟件的~~都是大致相同