將SQL Server表變成txt文件
方法-:用BCP命令
bcp 實用工具
bcp 實用工具在 Microsoft® SQL Server™ 2000 實例和數據文件之間以用戶指定的格式復數據。
語法
代碼: bcp {[[database_name.][owner].]{table_name | view_name} | 'query'} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F first_row] [-L last_row] [-b batch_size] [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6] [-q] [-C code_page] [-t field_term] [-r row_term] [-i input_file] [-o output_file] [-a packet_size] [-S server_name[instance_name]] [-U login_id] [-P password] [-T] [-v] [-R] [-k] [-E] [-h 'hint [,...n]']
參數database_name
指定的表或視圖所在數據庫的名稱。如果未指定,則為用戶默認數據庫。
owner
表或視圖所有者的名稱。如果執行大容量復制操作的用戶擁有指定的表或視圖,則 owner 是可選的。如果沒有指定 owner 并且執行大容量復制操作的用戶不擁有指定的表或視圖,則 Microsoft® SQL Server™ 2000 將返回錯誤信息并取消大容量復制操作。
table_name
是將數據復制到 SQL Server 時 (in) 的目的表名,以及從 SQL Server 復制數據時 (out) 的源表名。
view_name
是將數據復制到 SQL Server 時 (in) 的目的視圖名,以及從 SQL Server 復制數據時 (out) 的源視圖名。只有其中所有列都引用同一個表的視圖才能用作目的視圖。有關將數據復制到視圖的限制的更多信息,請參見 INSERT。
Query
是返回一個結果集的 Transact-SQL 查詢。如果查詢返回多個結果集,例如指定 COMPUTE 子句的 SELECT 語句,只有第一個結果集將復制到數據文件,隨后的結果集被忽略。使用雙引號引起查詢語句,使用單引號引起查詢語句中嵌入的任何內容。在從查詢中大容量復制數據時,還必須指定 queryout。
in | out | queryout | format
指定大容量復制的方向。in 是從文件復制到數據庫表或視圖,out 是指從數據庫表或視圖復制到文件。只有從查詢中大容量復制數據時,才必須指定 queryout。根據指定的選項(-n、-c、-w、-6 或 -N)以及表或視圖分隔符,format 將創建一個格式文件。如果使用 format,則還必須指定 -f 選項。
說明 Microsoft SQL Server 6.5 中的 bcp 實用工具不支持大容量復制到包含 sql_variant 或 bigint 數據類型的表。
data_file
大容量復制表或視圖到磁盤(或者從磁盤復制)時所用數據文件的完整路徑。當將數據大容量復制到 SQL Server 時,此數據文件包含將復制到指定表或視圖的數據。當從 SQL Server 大容量復制數據時,該數據文件包含從表或視圖復制的數據。路徑可以有 1 到 255 個字符。
-m max_errors
指定在大容量復制操作取消之前可能產生的錯誤的最大數目。bcp 無法復制的每一行都將被忽略并計為一個錯誤。如果沒有包括該選項,則默認為 10。
-f format_file
指定格式文件的完整路徑,該格式文件包含以前在同一個表或視圖上使用 bcp 時的存儲響應。當使用由 format 選項所創建的格式文件大容量復制入或復制出數據時,使用此選項。格式文件的創建是可選的。在提示幾個格式問題之后,bcp 將提示是否在格式文件中保存回答。默認文件名為 Bcp.fmt。大容量復制數據時,bcp 可引用一個格式文件,因此不必重新交互輸入以前的回答。如果未使用此選項,也沒有指定 –n、-c、-w、-6 或 -N,則 bcp 將提示輸入格式信息。
-e err_file
指定錯誤文件的完整路徑,此錯誤文件用于存儲 bcp 無法從文件傳輸到數據庫的所有行。來自 bcp 的錯誤信息將發送到用戶工作站。如果未使用此選項,則不創建錯誤文件。
-F first_row
指定要大容量復制的第一行的序數。默認值是 1,表示在指定數據文件的第一行。
-L last_row
指定要大容量復制的最后一行的序數。默認值是 0,表示指定數據文件中的最后一行。
-b batch_size
指定所復制的每批數據中的行數。每個批處理作為一個事務復制至服務器。SQL Server 提交或回滾(在失敗時)每個批處理的事務。默認情況下,指定的數據文件中的所有數據都作為一批復制。請不要與 -h 'ROWS_PER_BATCH = bb' 選項一起使用。
-n
使用數據的本機(數據庫)數據類型執行大容量復制操作。此選項不提示輸入每一字段,它將使用本機值。
-c
使用字符數據類型執行大容量復制操作。此選項不提示輸入每一字段;它使用 char 作為存儲類型,不帶前綴,t(制表符)作為字段分隔符,n(換行符)作為行終止符。
-w
使用 Unicode 字符執行大容量復制操作。此選項不提示輸入每一字段;它使用 nchar 作為存儲類型,不帶前綴,t(制表符)作為字段分隔符,n(換行符)作為行終止符。不能在 SQL Server 6.5 版或更早版本中使用。
-N
對非字符數據使用數據的本機(數據庫)數據類型和對字符數據使用 Unicode 字符類型執行大容量復制操作。這是可替代 -w 選項的性能更高的選項,其目的是使用數據文件將數據從一個 SQL Server 傳輸到另一個 SQL Server 中。它不提示輸入每一字段。在需要傳輸包含 ANSI 擴展字符的數據以及想利用本機模式的性能時,可以使用這一選項。不能在 SQL Server 6.5 版或更早版本中使用 -N 選項。
-V (60 | 65 | 70)
使用 SQL Server 早期版本中的數據類型執行大容量復制操作。此選項與字符 (-c) 或本機 (-n) 格式一起使用。此選項并不提示輸入每一字段,它使用默認值。例如,若要將 SQL Server 6.5 中的 bcp 實用工具所支持(但 ODBC 不再支持)的日期格式大容量復制到 SQL Server 2000,可使用 -V 65 參數。
重要 將數據從 SQL Server 大容量復制到數據文件時,即使指定了 –V,bcp 實用工具也不會為任何 datetime 或 smalldatetime 數據生成 SQL Server 6.0 或 SQL Server 6.5 的日期格式。日期將始終以 ODBC 格式寫入。另外,由于 SQL Server 6.5 版或更早版本不支持可為空的 bit 數據,因此 bit 列中的空值寫為值 0。
-6
使用 SQL Server 6.0 或 SQL Server 6.5 數據類型執行大容量復制操作。僅為保持向后兼容性。改為使用 –V 選項。
-q
在 bcp 實用工具和 SQL Server 實例的連接中執行 SET QUOTED_IDENTIFIERS ON 語句。使用該選項指定包含空格或引號的數據庫、所有者、表或視圖的名稱。將由三部分組成的整個表名或視圖名引在雙引號 (' ') 中。
-C code_page
僅為保持向后兼容性。作為代替,請在格式文件或交互式 bcp 中為每一列指定一個排序規則名。
指定數據文件中的數據代碼頁。只有當數據中包含字符值大于 127 或小于 32 的 char、varchar 或 text 列時,code_page 才有用。
代碼頁值 描述
ACP ANSI/Microsoft Windows® (ISO 1252)。
OEM 客戶程序使用的默認代碼頁。如果未指定 -C,則這是 bcp 使用的默認代碼頁。
RAW 不發生從一個代碼頁到另一個代碼頁的轉換。因為不發生轉換,所以這是最快的選項。
<值> 特定的代碼頁號碼,例如 850。
-t field_term
指定字段終止符。默認的字段終止符是 t(制表符)。使用此參數替代默認字段終止符。
-r row_term
指定行終止符。默認的行終止符是 n(換行符)。使用此參數替代默認行終止符。
-i input_file
指定響應文件的名稱,使用交互模式(未指定 –n、-c、-w、-6 或 -N)執行大容量復制時,響應文件包含對每一字段命令提示問題的響應。
-o output_file
指定接收 bcp 輸出(從命令提示重定向)的文件的名稱。
-a packet_size
指定發送到和發送自服務器的每個網絡數據包的字節數。可以使用 SQL Server 企業管理器(或 sp_configure 系統存儲過程)設置服務器配置選項。但是,使用此選項可以單個地替代服務器配置選項。packet_size 可以設置為 4096 到 65535 字節,默認值為 4096。
數據包大小的增加能夠提高大容量復制操作的性能。如果要求一個較大的數據包而得不到,則使用默認設置。bcp 生成的性能統計顯示出所使用數據包的大小。
-S server_name[instance_name]
指定要連接到的 SQL Server 實例。指定 server_name 以連接該服務器上的 SQL Server 默認實例。指定 server_nameinstance_name 以連接到該服務器上的 SQL Server 2000 命名實例。如果未指定服務器,則 bcp 連接到本地計算機上的 SQL Server 默認實例。從網絡上的遠程計算機執行 bcp 時,要求此選項。
-U login_id
指定用于連接到 SQL Server 的登錄 ID。
-P password
指定登錄 ID 的密碼。如果未使用此選項,則 bcp 將提示輸入密碼。如果不帶密碼將此選項用于命令提示行末尾,則 bcp 將使用默認密碼 (NULL)。
-T
指定 bcp 使用網絡用戶的安全憑據,通過信任連接連接到 SQL Server。不需要 login_id 和 password。
-v
報告 bcp 實用工具的版本號和版權。
-R
指定使用為客戶端計算機的區域設置定義的區域格式,將貨幣、日期和時間數據大容量復制到 SQL Server 中。默認情況下,將會忽略區域設置。
-k
指定在大容量復制操作中空列應保留一個空值,而不是對插入的列賦予默認值
-E
指定標識列的值出現在要導入的文件中。如果沒有給出 -E,則正導入的數據文件中此列的標識值將被忽略,而且 SQL Server 2000 會根據創建表期間指定的種子值和增量值自動指派唯一的值。如果數據文件的表或視圖中不包含標識列的值,則使用格式文件指定導入數據時應跳過表或視圖中的標識列;SQL Server 2000 將自動為該列指派唯一值。有關詳細信息,請參見 DBCC CHECKIDENT。
-h 'hint [,...n]'
指定在大容量復制數據到表或視圖時所使用的提示。在大容量復制數據到 SQL Server 6.x 或更早版本時,不能使用此選項。
提示 描述
ORDER (column [ASC | DESC] [,...n]) 數據文件中數據的排序次序。如果要裝載的數據已根據表中的聚集索引排序,則會提高大容量復制的性能。如果數據文件按不同次序排序,或者該表沒有聚集索引,則將忽略 ORDER 提示。所提供的列名必須是目的表中的有效列。默認情況下,bcp 假設數據文件沒有排序。
ROWS_PER_BATCH = bb 每批中數據的行數(即 bb)。在未指定 -b 時使用,這將使整個數據文件作為單個事務發送到服務器。服務器根據值 bb 優化大容量裝載。默認情況下,ROWS_PER_BATCH 未知。
KILOBYTES_PER_BATCH = cc 每批中數據的千字節 (KB) 近似數量(即 cc)。默認情況下,KILOBYTES_PER_BATCH 未知。
TABLOCK 大容量復制操作期間將獲取表級鎖。由于只在大容量復制操作期間才控制鎖減少了表中鎖的爭奪,因此此提示可以顯著提高性能。如果表沒有索引并且指定了 TABLOCK,則該表可以同時由多個客戶端裝載。默認情況下,鎖定行為是由表選項 table lock on bulk load 決定的。
CHECK_CONSTRAINTS 大容量復制操作期間,將檢查目的表上的所有約束。默認情況下,將會忽略約束。
FIRE_TRIGGERS 與 in 參數一起指定,在目的表上定義的任何插入觸發器將在大容量復制操作期間執行。如果沒有指定 FIRE_TRIGGERS,則不執行插入觸發器。對于 out、queryout 和 format 參數,將忽略 FIRE_TRIGGERS。
注釋
將忽略要導入的數據文件中計算列或 timestamp 列的值,SQL Server 2000 自動賦值。如果數據文件不包含表中的計算列或 timestamp 列的值,可用格式文件指定應在導入數據時跳過表中的計算列和 timestamp 列;SQL Server 將自動為該列賦值。
計算列和 timestamp 列照常會從 SQL Server 大容量復制到一個數據文件。
SQL Server 標識符(包括數據庫名稱、表名或視圖名、登錄和密碼)可以包含諸如嵌入空格和引號等字符。當在命令提示符處指定包含空格或引號的標識符或文件名時,需要將該標識符引在雙引號(' ') 內。另外,對于包含嵌入空格或引號的所有者、表或視圖的名稱,可以指定 -q 選項,或者將所有者、表或視圖的名稱在雙引號內用方括號 ([ ]) 括起來。
例如,Northwind 數據庫內有表 Jane's Orders,該表由用戶 Jane Doe 所擁有。若要使用登錄 Jane Doe 和密碼 go dba 將該表從 Northwind 數據庫大容量復制到 Orders.txt 文件,請執行下列命令之一:
代碼: bcp 'Northwind.Jane Doe.Jane's Orders' out 'Jane's Orders.txt' -c -q -U'Jane Doe' -P'go dba'/code]
[code]bcp 'Northwind.[Jane Doe].[Jane's Orders]' out 'Jane's Orders.txt' -c -U'Jane Doe' -P'go dba'
若要指定包含空格或引號的數據庫名稱,必須使用 -q 選項。
有關此實用工具位置和運行方式的信息,請參見命令提示實用工具入門。
請參見
在不同排序規則間復制數據
使用 bcp 和 BULK INSERT
并行數據裝載
SET QUOTED_IDENTIFIER
sp_tableoption
使用格式文件
方法二:DTS 導入/導出向導
DTS 導入/導出向導
在所有的數據轉換服務 (DTS) 工具中,DTS 導入/導出向導為在 OLE DB 數據源之間復制數據提供了最簡單的方法。
在連接到源和目的之后,可以選擇要導入或導出的數據,并可對要復制的數據應用各種轉換(例如,通過選擇列或使用 Microsoft® ActiveX® 腳本)。在大多數情況下,可以自動與源數據一起復制主鍵和外鍵約束。
說明 可以復制從 SQL 查詢中獲得的數據。SQL 查詢可以包含來自同一數據庫或分布式查詢中的多個表的聯接。作為整個進程的一部分,如果不存在任何表,則 DTS 導入/導出向導會自動為您創建目的表。
可用的數據源
使用 DTS 導入/導出向導,可以連接到下列數據源:
大多數的 OLE DB 和 ODBC 數據源以及用戶指定的 OLE DB 數據源。
文本文件。
到一個或多個 Microsoft SQL Server™ 實例的其它連接。
Oracle 和 Informix 數據庫。
必須已經安裝 Oracle 或 Informix 客戶端軟件。
Microsoft Excel 電子表格。
Microsoft Access 和 Microsoft FoxPro® 數據庫。
dBase 或 Paradox 數據庫。
有關更多信息,請參見 DTS 連接。
轉換數據
除復制數據外,還可以用諸如 Microsoft Visual Basic® Scripting Edition (VBScript) 或 Microsoft JScript® 之類的 ActiveX 腳本語言轉換列級數據。有關更多信息,請參見 DTS 轉換、轉換數據任務和在 DTS 中使用 ActiveX 腳本。
復制數據庫對象
使用 DTS 導入/導出向導,可以轉換索引、視圖、角色、存儲過程和引用完整性約束等數據庫對象。有關更多信息,請參見復制 SQL Server 對象任務。
保存 DTS 包
完成 DTS 導入/導出向導之后,可以將連接、轉換以及調度信息保存為 DTS 包??梢韵铝行问奖4姘?
保存到 SQL Server msdb 數據庫。
保存到 SQL Server 2000 Meta Data Services。
保存存為結構化存儲文件(.dts 文件)。
保存為 Visual Basic 文件。
可以立即運行包或調度該包以供今后執行。
有關更多信息,請參見保存 DTS 包和調度 DTS 包的執行。
編輯包
如果使用 DTS 導入/導出向導創建了一個包,然后保存了該包,則可以在 DTS 設計器中編輯這個包。使用 DTS 設計器,可以自定義在 DTS 導入/導出向導中創建的基本包,添加步驟、任務、轉換、事件驅動邏輯以及配置工作流。有關更多信息,請參見 DTS 設計器。
