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