線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2863
推到 Plurk!
推到 Facebook!

如何使用SQL Server API寫轉檔程式

答題得分者是:shieh2700
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-18 14:24:21 IP:218.160.xxx.xxx 未訂閱
各位先進大家好: 小弟有許多文字檔, 想將這些文字檔轉入SQL Server中, 使用Delphi寫程式轉太慢了, 是否可以直接透過SQL Server Store Procedure 或Call SQL Server API 來轉檔, 此段程式該如何寫, 感謝各位先進不吝賜教. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
shieh2700
高階會員


發表:0
回覆:127
積分:100
註冊:2002-06-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-26 23:18:08 IP:61.218.xxx.xxx 未訂閱
引言: 各位先進大家好: 小弟有許多文字檔, 想將這些文字檔轉入SQL Server中, 使用Delphi寫程式轉太慢了, 是否可以直接透過SQL Server Store Procedure 或Call SQL Server API 來轉檔, 此段程式該如何寫, 感謝各位先進不吝賜教. 我不是高手, 高手是正在銀幕前微笑的人.
使用 BULK INSERT 或許會比較方便, 或著使用 MS SQL 用提供的 BCP.EXE, MS SQL 的線上叢書有許多範例可參考.
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-27 00:48:13 IP:61.62.xxx.xxx 未訂閱
HI, Miles兄, 若是文字檔的格式是固定的話, 可以利用文字檔資料表配合 TBatchMove 元件來進行轉入資料庫, 這種方式會比較理想. 如何使用文字檔資料表, 請參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34655
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-29 20:50:21 IP:218.160.xxx.xxx 未訂閱
感謝shieh2700 及timhuang兄的回答 請問shieh2700兄BCP.EXE該如何使用, 弟在網路上找了一圈 有看沒有懂, 是否有範例. Tim兄好久不見, 是否可以不透過BDE來做轉檔, 我直接用DTS時速度 非常快, 但只要透過BDE速度明顯不夠, 且我也想學習一些SQL Server API 的用法, 是否有範例可取得. 感謝~~~~~ 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
shieh2700
高階會員


發表:0
回覆:127
積分:100
註冊:2002-06-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-29 21:47:03 IP:61.216.xxx.xxx 未訂閱
引言: 感謝shieh2700 及timhuang兄的回答 請問shieh2700兄BCP.EXE該如何使用, 弟在網路上找了一圈 有看沒有懂, 是否有範例. Tim兄好久不見, 是否可以不透過BDE來做轉檔, 我直接用DTS時速度 非常快, 但只要透過BDE速度明顯不夠, 且我也想學習一些SQL Server API 的用法, 是否有範例可取得. 感謝~~~~~ 我不是高手, 高手是正在銀幕前微笑的人.
BCP 使用格式檔(摘錄) 取自 MS SQL Server 線上叢書 在使用互動模式大量複製資料時,bcp 公用程式將提示您儲存有關儲存型別、前置詞長度、欄位長度和欄位與資料列終端子的相關資訊。用來儲存資料檔中每個欄位之格式資訊的檔案,即稱為格式檔: Do you want to save this format information in a file? [Y/n] y Host filename: [bcp.fmt] 雖然格式檔的預設名稱為 Bcp.fmt,您仍可指定不同的檔名。 此格式檔可提供預設資訊來將資料檔中的資料大量複製回 Microsoft® SQL Server™ 的執行個體 (Instance) ,或在其他時候從資料表大量複製出資料,而不需指定格式。在使用現存的格式檔將資料大量複製到 SQL Server 的執行個體或複製回來時,bcp 並不會提示您輸入檔案儲存型別、前置詞長度、欄位長度或欄位終端子,因為它會使用已經記錄的數值。 若要在將資料匯入 SQL Server 的執行個體 (Instance) 時,使用先前建立的格式檔,請使用 bcp 公用程式的 -f 選項,或使用 BULK INSERT 陳述式的 FORMATFILE 子句。例如,若要使用先前建立的格式檔 (Authors.fmt) 將 New_auth.dat 資料檔的內容大量複製到 pubs 資料庫的 authors2 資料表內,請使用下列指令: bcp pubs..authors2 in c:\new_auth.dat -fc:\authors.fmt -Sservername -Usa -Ppassword BULK INSERT 陳述式可使用 bcp 公用程式儲存的格式檔。例如: BULK INSERT pubs..authors2 FROM 'c:\new_auth.dat' WITH (FORMATFILE = 'c:\authors.fmt') Authors.fmt 檔為: 8.0 9 1 SQLCHAR 0 11 "," 1 au_id SQL_Latin1_General_Cp437_BIN 2 SQLCHAR 0 40 "," 2 au_lname SQL_Latin1_General_Cp437_BIN 3 SQLCHAR 0 20 "," 3 au_fname SQL_Latin1_General_Cp437_BIN 4 SQLCHAR 0 12 "," 4 phone SQL_Latin1_General_Cp437_BIN 5 SQLCHAR 0 40 "," 5 address SQL_Latin1_General_Cp437_BIN 6 SQLCHAR 0 20 "," 6 city SQL_Latin1_General_Cp437_BIN 7 SQLCHAR 0 2 "," 7 state SQL_Latin1_General_Cp437_BIN 8 SQLCHAR 0 5 "," 8 zip SQL_Latin1_General_Cp437_BIN 9 SQLCHAR 0 1 "\r\n" 9 contract SQL_Latin1_General_Cp437_BIN
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-29 21:54:58 IP:218.160.xxx.xxx 未訂閱
謝謝shieh2700兄的指導: 剛剛參考了Dot.com兄在另一篇提供的連結 http://www.delphibbs.com/delphibbs/dispq.asp?LID=1691966 試了一下, 可能是目前比較快的做法, 只不過越來越困惑的是這些參數是從 哪裡習得. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
shieh2700
高階會員


發表:0
回覆:127
積分:100
註冊:2002-06-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-29 22:10:32 IP:61.216.xxx.xxx 未訂閱
引言: 謝謝shieh2700兄的指導: 剛剛參考了Dot.com兄在另一篇提供的連結 http://www.delphibbs.com/delphibbs/dispq.asp?LID=1691966 試了一下, 可能是目前比較快的做法, 只不過越來越困惑的是這些參數是從 哪裡習得. 我不是高手, 高手是正在銀幕前微笑的人.
之前提供資料都是從線上說明中摘錄的. 另一個範例: Newpubs.dat 檔為: 1111,Stone Age Books,Boston,MA,USA 2222 ,Harley & Davidson,Washington,DC,USA 3333 ,Infodata Algosystems,Berkeley,CA,USA 在 Newpubs.dat 檔中,資料列的每個欄位都是以逗點結束 (,); 每個資料列則以新行字元 (Newline Character,\n) 結束。 下列範例中的 publishers2 資料表可藉著執行底下的指令來建立: USE pubs GO SELECT * INTO publishers2 FROM publishers GO 若要將Newpubs.dat 的資料大量複製到 publishers2 內,請使用下列指令: bcp pubs..publishers2 in newpubs.dat -c -t , -r \n -Sservername -Usa -Ppassword 此外,您可以使用 SQL Query Analyzer 這類查詢工具的 BULK INSERT 陳述式來大量複製資料: BULK INSERT pubs..publishers2 FROM 'c:\newpubs.dat' WITH ( DATAFILETYPE = 'char', FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )
系統時間:2024-06-28 13:57:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!