如何使用SQL Server API寫轉檔程式 |
答題得分者是:shieh2700
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
引言: 感謝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 發送簡訊給我 |
謝謝shieh2700兄的指導:
剛剛參考了Dot.com兄在另一篇提供的連結
http://www.delphibbs.com/delphibbs/dispq.asp?LID=1691966
試了一下, 可能是目前比較快的做法, 只不過越來越困惑的是這些參數是從
哪裡習得. 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
引言: 謝謝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' ) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |