bcp 公用程式
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric 中的 SQL 資料庫
「大量複製程式公用程式」(bcp) 會以使用者指定的格式在 Microsoft SQL Server 執行個體與資料檔案之間大量複製資料。
若要在 Linux 使用 bcp,請參閱 在 Linux 安裝 SQL Server 命令列工具 sqlcmd 和 bcp。 如需使用 bcp 搭配 Azure Synapse Analytics 的詳細資訊,請參閱使用 bcp 載入資料。
bcp 公用程式可用來將大量新資料列匯入 SQL Server 資料表,或是將資料表的資料匯出成資料檔案。 除了搭配 queryout
選項使用之外,此公用程式不需要任何 Transact-SQL 方面的知識。 若要將數據匯入數據表,您必須使用針對該數據表建立的格式檔案,或了解數據表的結構及其數據行的有效數據類型。
注意
若您使用 bcp 備份資料,請建立格式檔案以記錄資料格式。 bcp 資料檔案不包含任何結構描述或格式資訊,所以如果資料表或檢視表遭到卸除,而您又沒有格式檔案,可能就無法匯入資料。
如需用於 bcp 語法的語法慣例,請參閱 Transact-SQL 語法慣例。
如需 Linux 和 macOS 上的 bcp,請參閱 Linux 和 macOS 上 bcp 的考慮事項。
下載最新版本的 bcp 公用程式
命令列工具為 General Availability (GA),但會與 SQL Server 2019 (15.x) 及更新版本的安裝程式套件一同發行。
版本資訊
- 版本號碼:15.0.4298.1
- 組建編號:15.0.4298.1
- 發行日期:2023 年 4 月 7 日
bcp 支援 Microsoft Entra 驗證,包括 Azure SQL Database 的多重要素驗證 (MFA) 支援、Microsoft Fabric 中的 SQL 資料庫,以及 Azure Synapse Analytics。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
系統需求
- Windows 8、Windows 8.1、Windows 10、Windows 11
- Windows Server 2016、Windows Server 2019、Windows Server 2022
這個元件需要最新的 Microsoft ODBC Driver 17 for SQL Server。
若要檢查 bcp 版本,請執行 bcp -v
命令,並且確認使用的是 15.0.4298.1 版或更新版本。
語法
bcp [database_name.] schema.{table_name | view_name | "query"}
{in data_file | out data_file | queryout data_file | format nul}
[-a packet_size]
[-b batch_size]
[-c]
[-C { ACP | OEM | RAW | code_page } ]
[-d database_name]
[-D]
[-e err_file]
[-E]
[-f format_file]
[-F first_row]
[-G Microsoft Entra authentication]
[-h"hint [,...n]"]
[-i input_file]
[-k]
[-K application_intent]
[-l login_timeout]
[-L last_row]
[-m max_errors]
[-n]
[-N]
[-o output_file]
[-P password]
[-q]
[-r row_term]
[-R]
[-S [server_name[\instance_name]]]
[-t field_term]
[-T]
[-U login_id]
[-u]
[-v]
[-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)]
[-w]
[-x]
[-Y[s|m|o]]
考量與限制
- bcp 公用程式有一項限制,就是錯誤訊息的顯示總字元大小不能超過 512 位元組。 只會顯示錯誤訊息的前 512 個位元組。
Linux 和 macOS 上的 BCP 注意事項
欄位終止符是 Tab 鍵 (
\t
)。行結束符是換行符(
\n
)。字元模式是 bcp 格式檔案的慣用格式,以及不包含擴充字元的數據檔。
命令列參數中的反斜杠 (
\
)必須加上引號或進行轉義。 例如,若要將換行符指定為自定義數據列終止符,您必須使用下列其中一個機制:-r\\n
-r"\n"
-r'\n'
命令列選項
下表列出 bcp中可用的命令行選項,以及它們支援的作業系統。
命令行選項 | Windows 上支援 | Linux 和macOS上支援 |
---|---|---|
[database_name.]架構。{table_name | view_name | “查詢”} | 是的 | 是的 |
[{indata_file | outdata_file | queryoutdata_file | format nul}]() | 是的 | 是的 |
-a packet_size | 是的 | 是的 |
-b batch_size | 是的 | 是的 |
-c | 是的 | 是的 |
-C { ACP |OEM |RAW |code_page } | 是的 | 不 |
-d database_name | 是的 | 是的 |
-D | 是的 | 是的 |
-e err_file | 是的 | 是的 |
-E | 是的 | 是的 |
-f format_file | 是的 | 是的 |
-F 第一行 | 是的 | 是的 |
-G Microsoft Entra 驗證 | 是的 | 是的 |
-h“提示 [,...n]” | 是的 | 不 |
-i input_file | 是的 | 不 |
-k | 是的 | 是的 |
-K application_intent | 是的 | 是的 |
-l login_timeout | 是的 | 是的 |
-L 最後一行 | 是的 | 是的 |
-m max_errors | 是的 | 是的 |
-n | 是的 | 是的 |
-N | 是的 | 不 |
-o output_file | 是的 | 不 |
-P 密碼 | 是的 | 是的 |
-q | 是的 | 是的 |
-r row_term | 是的 | 是的 |
-R | 是的 | 是的 |
-S [server_name[\instance_name]] | 是的 | 是的 |
-t field_term | 是的 | 是的 |
-T | 是的 | 是的 |
-U 登入_帳號 | 是的 | 是的 |
-u | 不 | 是的 |
-v | 是的 | 是的 |
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) | 是的 | 不 |
-w | 是的 | 是的 |
-x | 是的 | 不 |
-Y[s|m|o] | 不 | 是的 |
database_name
指定之資料表或檢視表所在的資料庫名稱。 若未指定,這就是使用者的預設資料庫。
您也可以使用 -d
明確指定資料庫名稱。
schema
資料表或檢視表的擁有者名稱。 如果執行該作業的使用者擁有指定的資料表或檢視表,則可選擇是否要使用 schema。 如果未指定 架構,且執行作業的使用者不會擁有指定的數據表或檢視表,SQL Server 會傳回錯誤訊息,並取消作業。
table_name
將資料匯入 (in
)時的目的地資料表名稱,以及從 SQL Server (out
) 匯出資料時的來源資料表名稱。
view_name
將資料複製到 SQL Server (in
) 時的目的地檢視表名稱,以及從 SQL Server(out
) 複製資料時的來源檢視表名稱。 只有當所有資料行都參考同一個資料表時,該視圖才能用作目的地視圖。 有關將資料複製到檢視時的限制的詳細資訊,請參閱 INSERT。
“查詢”
傳回結果集的 Transact-SQL 查詢。 如果查詢傳回多個結果集,則只會將第一個結果集複製到資料檔案中,並會忽略接下來的結果集。 請用雙引號括住查詢語句,用單引號括住嵌入在查詢語句中的任何項目。 從查詢複製大量資料時也必須指定 queryout
。
只要在預存程序內參考的所有資料表在 bcp 陳述式執行之前就已存在,查詢就可以參考預存程序。 例如,如果預存程序產生暫存資料表,則 bcp 陳述式會失敗,這是因為暫存資料表只可在執行階段使用,而無法在陳述式執行階段使用。 在此種情況下,請考慮將預存程序的結果插入資料表中,然後使用 bcp 將資料表的資料複製到資料檔案。
在
將檔案內容複製到資料庫的資料表或檢視表中。 指定大量複製的方向。
外面
從資料庫資料表或檢視表複製到檔案。 指定大量複製的方向。
若您指定現有的檔案,將會覆寫該檔案。 當 bcp 公用程式擷取數據時,它會將空字串表示為 null,並以 null 字串表示為空字串。
data_file
資料檔案的完整路徑。 當資料大量匯入 SQL Server 時,資料檔案會包含要複製到指定資料表或檢視表的資料。 從 SQL Server 大量匯出資料時,資料檔案會包含從資料表或檢視表複製的資料。 路徑可以有 1 至 255 個字元。 資料檔案最多可以包含 2^63 - 1 個資料列。
queryout
從查詢複製資料,只有在批量複製查詢資料時才需指定。
格式
依據指定的選項 (-n
、-c
、-w
或 -N
) 及資料表或檢視表分隔符號建立格式檔案。 大量複製資料時, bcp 命令可以參考格式檔案,讓您不需要以互動方式重新輸入格式資訊。
format
選項需要 -f
選項;建立 XML 格式檔案也需要 -x
選項。 如需詳細資訊,請參閱建立格式檔案 (SQL Server)。 您必須指定 nul
為值 (format nul
)。
-a packet_size
指定伺服器所收送之每個網路封包的位元組數。 利用 SQL Server Management Studio (或 sp_configure
系統預存程序) 即可設定伺服器組態選項。 但是使用此選項可以個別地覆寫伺服器組態選項。
packet_size 可介於 4,096 位元組到 65,535 位元組;預設值是 4096
。
增加封包大小可以增強大量複製作業的效能。 如果要求較大的封包但無法為您授與該封包,便會使用預設值。 bcp 公用程式所產生的效能統計資料,會顯示所用的封包大小。
-b 批量大小
指定每一批次匯入資料的資料列數。 每一批次會先匯入及記錄為個別的交易,整個批次會匯入完成後才予以認可。 根據預設,資料檔案中的所有資料列是以一個批次匯入。 若要在多個批次之間分散資料列,請指定小於資料檔案之資料列數目的 batch_size 。 如果任何批次的交易失敗,則只會回復當前批次的插入操作。 已被認可交易匯入的批次不會受到後續失敗的影響。
請勿使用這個選項搭配 -h "ROWS_PER_BATCH=<bb>"
選項。
-c
利用字元資料類型來執行作業。 此選項不會針對每個欄位提示;它使用 char 作為儲存類型,沒有前置詞,使用 \t
(Tab鍵字元) 作為欄位分隔符號,並使用 \r\n
(換行字元) 作為資料列結束符號。
-c
與 -w
不相容。
如需詳細資訊,請參閱使用字元格式匯入或匯出資料 (SQL Server)。
-C { ACP | OEM | RAW | code_page }
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定資料檔案中之資料的字碼頁。 只有當資料包含char、varchar或text資料行,且字元值大於127或小於32時,code_page 才有相關性。
您應該為格式檔案中的每個數據行指定定序名稱,但當您想要 65001 選項優先於定序/代碼頁規格時除外。
字碼頁值 | 描述 |
---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252)。 |
OEM |
用戶端所用的預設字碼頁。 如果未指定 -C ,這是預設字碼頁。 |
RAW |
不會發生從一個字碼頁轉換到另一個字碼頁的情況。 這是最快的選項,因為不進行轉換。 |
<code_page> |
特定編碼頁號,例如 850。 第 13 版 (SQL Server 2016 (13.x)) 之前的版本不支援字碼頁 65001 (UTF-8 編碼)。 從 13 版開始,可以將 UTF-8 編碼匯入舊版的 SQL Server。 |
-d database_name
指定要連接的資料庫。 根據預設,bcp 會連線到使用者的預設資料庫。 如果指定 -d <database_name>
和三部分名稱 (database_name.schema.table,作為第一個參數傳遞至 bcp),將會發生錯誤,因為您無法指定資料庫名稱兩次。 如果 database_name 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -d
與資料庫名稱之間加空格。
-D
使傳遞至 bcp -S
選項的值解譯為資料來源名稱 (DSN)。
DSN 可用來:
- 內嵌驅動程式選項以簡化命令行,
- 強制執行無法從命令行存取的驅動程序選項,例如 MultiSubnetFailover、
- 或協助保護敏感性認證,避免被發現為命令列參數。
如需詳細資訊,請參閱使用 sqlcmd 進行連線中的 「sqlcmd 和 bcp 中的 DSN 支援」。
-e err_file
指定錯誤檔的完整路徑,該檔案用來儲存 bcp 公用程式無法從檔案傳送至資料庫的任何資料列。 bcp 命令所產生的錯誤訊息,會送往使用者的工作站。 如果不使用這個選項,就不會建立錯誤檔。
如果 err_file 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -e
與 err_file 值之間加上空格。
-E
指定識別欄位要使用匯入之資料檔案中的一個或多個識別值。 如果未提供 -E
,就會略過匯入之資料檔案中此資料行的識別值,且 SQL Server 會根據建立資料表期間所指定的初始值與遞增值,自動指派唯一值。 如需詳細資訊,請參閱 DBCC CHECKIDENT。
如果數據檔不包含資料表或檢視中標識列的值,請使用格式檔案來指定匯入數據時應該略過數據表或檢視中的標識列。 SQL Server 會自動指派數據行的唯一值。
-E
選項有特殊存取權限需求。 如需詳細資訊,請參閱本文後續章節「備註」。
-f format_file
指定格式檔的完整路徑。 這個選項的意義取決於使用它的環境,如下所示:
如果
-f
與format
選項一起使用,會為指定的資料表或檢視表建立指定的 format_file。 如果要建立 XML 格式檔案,請一併指定-x
選項。 如需詳細資訊,請參閱建立格式檔案 (SQL Server)。搭配
in
或out
選項一起使用時,-f
需要現有的格式檔案。注意
使用格式檔案時,
in
或out
選項是可選的。 沒有-f
選項時,如果未指定-n
、-c
、-w
或-N
,命令會提示您輸入格式資訊,讓您將回覆儲存於格式檔案 (預設檔案名稱是bcp.fmt
)。
如果 format_file 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -f
與 format_file 值之間加上空格。
-F first_row
指定要從資料表匯出或從資料檔案匯入之第一個資料列的號碼。 這個參數需要的值必須大於 (>
) 0、小於 (<
) 或等於 (=
) 資料列總數。 如果沒有這個參數,預設值是檔案中的第一個資料列。
first_row 可以是值高達 2^63-1 的正整數。
-F
first_row 以 1 為基礎。
-G
適用於:Azure SQL 資料庫、Microsoft Fabric 中的 SQL 資料庫,以及僅限 Azure Synapse Analytics。
用戶端會使用此參數來指定使用者已使用 Microsoft Entra 識別碼進行驗證。
-G
開關需要 14.0.3008.27 版 或更新版本。 若要判斷您的版本,請執行 bcp -v
。 如需詳細資訊,請參閱使用 Microsoft Entra 驗證搭配 SQL 資料庫或 Azure Synapse Analytics 或 在 Fabric 中進行 SQL 資料庫的驗證。
重要
在 Linux 和 macOS 上,目前不支援 Microsoft Entra 的互動式驗證。 Microsoft Entra 整合式驗證需要 Microsoft ODBC Driver 17 for SQL Server 17.6.1 版和更新版本,以及正確設定的 Kerberos 環境。
若要檢查您的 bcp 版本是否包含 Microsoft Entra 驗證的支援,請輸入 bcp --help
並確認您在可用引數清單看到 -G
。
Microsoft Entra 使用者名稱和密碼
您想使用 Microsoft Entra 使用者名稱和密碼時,可以提供
-G
選項,而提供-U
和-P
選項也可以使用使用者名稱和密碼。下列範例使用 Microsoft Entra 使用者名稱和密碼認證匯出資料。 此範例會從
bcptest
Azure 伺服器的testdb
資料庫匯出aadserver.database.windows.net
資料表,並將資料儲存在c:\last\data1.dat
檔案中:bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
下列範例使用 Microsoft Entra 使用者的認證匯入資料。 這個範例使用 Microsoft Entra 使用者名稱和密碼,將資料從
c:\last\data1.dat
檔案匯入 Azure 伺服器bcptest
上testdb
資料庫的aadserver.database.windows.net
資料表:bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
Microsoft Entra 整合版
若為 Microsoft Entra 整合式驗證,請提供
-G
選項,但不用提供使用者名稱或密碼。 這個組態需要目前的 Windows 使用者帳戶(執行 bcp 命令的帳戶)與 Microsoft Entra ID 建立聯邦身份驗證:下列範例使用 Microsoft Entra 整合式驗證匯出資料。 這個範例使用與 Microsoft Entra ID 同盟的 Windows 認證,從邏輯伺服器
bcptest
上的testdb
資料庫匯出aadserver.database.windows.net
資料表,並將資料儲存於檔案c:\last\data2.dat
:bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
下列範例使用 Microsoft Entra 整合式驗證匯入資料。 這個範例使用與 Microsoft Entra ID 同盟的 Windows 認證,將資料從檔案資料表
c:\last\data2.dat
匯入bcptest
邏輯伺服器上testdb
資料庫的aadserver.database.windows.net
資料表:bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Microsoft Entra 受控服務識別
重要
bcp 與驅動程式緊密結合。 bcp和用來建立DSN的驅動程式的主要版本必須相同。 若要判斷您的版本,請執行
bcp -v
。在 Windows 上使用受控服務識別透過 bcp 匯出資料需要設定 DSN。
在執行 Windows 的電腦上設定 DSN:
在鍵盤上按下 Windows 鍵。
輸入
ODBC
並選取適當的 ODBC 資料來源管理員版本選取 [使用者 DSN] 或 [系統 DSN] 索引標籤
選取 [新增] 並依照提示執行。
當系統要求驗證類型時,請選取 [Azure 受控服務識別驗證]
如果您有使用者指派的受控識別,請將身分識別的
Object (principal) ID
貼上到驗證索引標籤底部的 [登入識別碼] 方塊中若要設定 DSN,請繼續遵循提示。
如需包含螢幕擷取畫面的完整逐步解說,請參閱 在UI中建立和編輯DSN。
設定 DSN 之後,可以使用 bcp,並使用
-D
旗標以指出傳遞-S
的值是 DSN。bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
Microsoft Entra ID 存取權杖
適用於:僅限 Linux 和 macOS。 不支援 Windows 作業系統。
在 Linux 和 macOS 上,bcp 17.8 和更新版本的使用者也可以使用令牌進行驗證。 下列範例使用 Linux 上的 PowerShell 來擷取存取權杖。
此範例會擷取存取權杖,並將其放入檔案中,以使用系統指派的受控識別導出資料。
Connect-AzAccount -Identity $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
這個範例會將
Client ID
傳遞到Connect-AzAccount
的-AccountId
參數,以擷取存取權杖,然後將它放入權杖檔案中。 存取權杖接著會用來透過指定的使用者分配的受控識別來匯出資料。Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity' $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
Microsoft Entra 互動式驗證
適用於:僅限 windows。 不支援Linux和macOS。
Microsoft可供所有 Azure SQL 和 SQL Server 2022 (16.x) 和更新版本使用的 Entra 互動式驗證,可讓您使用互動式對話框進行驗證,這也支援多重要素驗證。
Microsoft Entra 互動式驗證需要 bcp15.0.1000.34 版 或更新版本,ODBC 17.2 版或更新版本。
若要啟用互動式驗證,請僅使用使用者名稱 (
-U
) 提供-G
選項,並且不輸入密碼。下列範例使用 Microsoft Entra 互動式驗證匯出資料,其中包括指定 Microsoft Entra 帳戶的使用者名稱。
互動模式需要手動輸入密碼,或者若為啟用多重要素驗證的帳戶,則請完成您已設定的 MFA 驗證方法。
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
如果使用的 Microsoft Entra 使用者是屬於聯邦網域的 Windows 帳戶,則在命令列中輸入的使用者名稱必須包含其網域(例如,
joe@contoso.com
):bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
如果來賓使用者存在於特定Microsoft Entra 租使用者中,且屬於 Azure SQL Database 中具有執行 bcp 命令之資料庫許可權的群組的一部分,則會使用其來賓用戶別名(例如,
keith0@adventure-works.com
)。
-h “提示 [、... n]”
僅限適用於 Windows。 Linux 和macOS上不支援。
指定在將資料大量匯入至資料表或檢視表時使用的一或多個提示選項。
ORDER (column [ASC | DESC] [, ...n])
資料檔案中之資料的排序順序。 如果匯入資料時是依照資料表的叢集索引來排序,將可提升大量匯入的效能。 如果資料檔案的排序順序不同,即不是按照叢集索引鍵的順序,或者資料表上沒有叢集索引,則會忽略
ORDER
子句。 提供的資料行名稱必須是目的地資料表中的有效資料行名稱。 根據預設, bcp 會假設資料檔案沒有排序。 為了達到最佳的大量匯入效果,SQL Server 也會驗證匯入的資料是否已排序。ROWS_PER_BATCH = bb
每一批資料的資料列數目 (如 bb)。 在未指定
-b
時使用,整個資料檔案會當成單一交易傳給伺服器。 伺服器根據 bb 值,將大量載入最佳化。ROWS_PER_BATCH
預設為未知。KILOBYTES_PER_BATCH = cc
每一批資料的近似 KB 數 (如 cc)。
KILOBYTES_PER_BATCH
預設為未知。TABLOCK
指定在大量載入操作期間取得表級鎖定,以進行批次更新;否則,會取得列級鎖定。 此提示可大幅改善效能,因為大量複製作業期間保留鎖定可減少數據表上的鎖定爭用。 如果數據表沒有索引且已指定
TABLOCK
,則可以從多個客戶端同時載入數據表。 根據預設,鎖定行為取決於資料表選項table lock on bulkload
。 如需詳細資訊,請參閱 sp_tableoption。注意
如果目標數據表是叢集數據行存放區索引,則多個並行用戶端不需要
TABLOCK
提示,因為每個並行線程都會在索引內指派個別的數據列群組,並將數據載入其中。 如需詳細資訊,請參閱 資料行存放區索引:概觀。檢查約束條件
指定在大量匯入作業期間,必須檢查目標資料表或檢視的所有約束規則。 如果沒有
CHECK_CONSTRAINTS
提示,則會忽略任何CHECK
和FOREIGN KEY
限制,而且在作業之後,表格上的限制會標示為不受信任。注意
一律會強制執行
UNIQUE
、PRIMARY KEY
和NOT NULL
約束條件。在某個時候,您必須檢查整張資料表的約束條件。 如果大容量導入作業之前數據表沒有空白,重新驗證條件約束的成本可能會超過將
CHECK
條件約束套用至累加數據的成本。 因此,建議您在進行累加大量匯入期間,通常要啟用條件約束檢查。如果輸入資料包含違反條件約束的資料列,您可能會想停用條件約束 (預設行為)。 停用
CHECK
條件約束后,您可以匯入數據,然後使用 Transact-SQL 語句來移除無效的數據。bcp 現在會強制執行資料驗證與資料檢查,若針對資料檔案中無效的資料執行指令碼,則資料驗證與檢查作業可能會導致指令碼失敗。
注意
-m
max_errors 參數不適用於條件約束檢查。FIRE_TRIGGERS
當您在 引數中使用 指定此選項時,於目的地資料表上定義的任何插入觸發程式將在大量複製操作期間執行。 如果未指定
FIRE_TRIGGERS
,則不會執行插入觸發程式。FIRE_TRIGGERS
會忽略out
、queryout
和format
自變數。
-i input_file
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定回應檔的名稱,該檔案包含利用互動模式 (未指定 -n
、-c
、-w
或 -N
) 執行大量複製時,對於命令提示字元中每個資料欄位問題的回覆。
如果 input_file 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -i
與 input_file 值之間加空格。
-k
指定空白資料行在作業過程中應保持 Null 值,而非保有插入之資料行的任何預設值。 如需詳細資訊,請參閱大量匯入期間保留 Null 或預設值 (SQL Server)。
-K application_intent
宣告連接到伺服器時的應用程式工作負載類型。 唯一可能的值是 ReadOnly
。 如果未指定 -K
,則 bcp 公用程式不支援對 AlwaysOn 可用性群組中的次要複本進行連線。 如需詳細資訊,請參閱將唯讀工作負載卸載至 Always On 可用性群組的次要複本。
-l login_timeout
設定登入超時時間。
-l
選項會指定在您嘗試連線到伺服器時,登入 SQL Server 逾時之前的秒數。 預設登入逾時為 15 秒。 登入逾時必須是介於 0 與 65534 之間的數字。 如果提供的值不是數值或不在該範圍內,bcp 會產生錯誤訊息。 值為 0 指定無限的逾時時間。
-L 最後一行
指定要從資料表匯出或從資料檔案匯入的最後一個資料列的號碼。 這個參數需要的值應大於 (>
) 0 但小於 (<
) 或等於 (=
) 最後一個資料列的號碼。 如果沒有這個參數,預設值是檔案中的最後一個資料列。
last_row 可以是值高達 2^63-1 的正整數。
-m 最大錯誤
指定 bcp 作業取消前,可以出現的語法錯誤數上限。 語法錯誤也暗示著對於目標資料類型的資料轉換錯誤。 max_errors 總計不包括任何只能在伺服器偵測的錯誤,例如約束違規。
bcp 公用程式無法複製的資料列會略過,並且當成一次錯誤。 如果未納入這個選項,預設值是 10。
注意
-m
選項也不適用於轉換 money 或 bigint 資料類型。
-n
利用資料的原生 (資料庫) 資料類型來執行大量複製作業。 並非每個欄位都會出現這個選項的提示;它會使用原生值。
如需詳細資訊,請參閱使用原生格式匯入或是匯出資料 (SQL Server)。
-N
適用於:僅限 windows。 Linux 和macOS上不支援。
如果是非字元資料,請使用資料的原生 (資料庫) 資料類型執行大量複製作業;如果是字元資料,請使用 Unicode 字元執行大量複製作業。 這個選項為 -w
選項提供效能較高的替代方案,目的在於利用資料檔案,在 SQL Server 的執行個體之間轉移資料。 並非每個欄位都會出現這個提示。 如果您要轉移的資料包含 ANSI 擴充字元,而且您想利用原生模式的效能,請使用這個選項。
如需詳細資訊,請參閱使用 Unicode 原生格式匯入或匯出資料 (SQL Server)。
如果您使用 bcp 搭配 -N
將資料匯出後再匯入相同的資料表架構,若有固定長度的非 Unicode 字元欄位(例如 char(10)),可能會看到截斷警告。
可以忽略此警告。 解決這個警告的其中一種方式是使用 -n
取代 -N
。
-o 輸出檔案(output_file)
適用於:僅限 Windows。 Linux 和macOS上不支援。
指定接收來自命令提示字元重新導向之輸出的檔案名稱。
如果 output_file 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -o
與 output_file 值之間加空格。
-P password
指定 登入識別碼的密碼。 如果未使用這個選項,bcp 命令會提示您輸入密碼。 如果在不使用密碼的命令提示字元結尾使用此選項,bcp 會使用預設密碼 (NULL
)。
重要
請勿使用空白密碼。 請使用增強式密碼。
若要遮蓋密碼,請勿指定 -P
選項以及 -U
選項。 相反地,在指定 bcp 以及 -U
選項和其他參數之後(請勿指定 -P
),按 Enter 鍵,命令會提示您輸入密碼。 這個方法可確保在輸入密碼時遮蓋密碼。
如果 password 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -P
與 password值之間加空格。
-q
在 bcp 公用程式與 SQL Server 實例之間的連接中執行 SET QUOTED_IDENTIFIER ON
語句。 請利用這個選項來指定包含空格或單引號的資料庫、擁有者、資料表或檢視表名稱。 以引弧括住整個三部分數據表或檢視名稱(""
)。
若要指定包含空格或單引號的資料庫名稱,您必須使用 -q
選項。
-q
不適用於傳遞給 -d
的值。
如需詳細資訊,請參閱本文中的<
-r 行_術語
指定資料列結束字元。 預設值為 \n
(換行符)。 請利用這個參數來覆寫預設的資料列結束字元。 如需詳細資訊,請參閱指定欄位與資料列結束字元 (SQL Server)。
如果在 bcp 命令使用十六進位表示法指定資料列結束字元,該值將會在 0x00
處截斷。 例如,指定 0x410041
時會使用 0x41
。
如果 row_term 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -r
與 row_term 值之間加空格。
-R
指定要使用針對用戶端電腦地區設定定義的區域格式,將貨幣、日期和時間資料大量複製到 SQL Server 中。 依預設,會忽略地區設定。
-S [server_name[\instance_name]]
指定要連線的 SQL Server 實例名稱,或如果使用 -D
,則為 DSN。
如果未指定任何伺服器,bcp 公用程式會連接至本機電腦的 SQL Server 預設執行個體。 透過網路上的遠端電腦或本機具名執行個體執行 bcp 指令時,此選項為必要選項。 若要連線至伺服器上的 SQL Server 預設執行個體,只要指定 server_name。 若要連接至 SQL Server 的具名執行個體,請指定 server_name**\**instance_name。
-t field_term
指定欄位結束字元。 預設值為 \t
(Tab 字元)。 請利用這個參數來覆蓋預設的欄位結束字元。 如需詳細資訊,請參閱指定欄位與資料列結束字元 (SQL Server)。
如果在 bcp 命令使用十六進位表示法指定欄位結束字元,該值將會在 0x00
處截斷。 例如,指定 0x410041
時會使用 0x41
。
如果 field_term 的開頭是連字號 (-
) 或斜線 (/
),請勿在 -t
與 field_term 值之間加空格。
-T
指定 bcp 公用程式使用整合式安全性的信任連線來連線至 SQL Server。 網路使用者的安全性認證、login_id 及 password 並非必要選項。 如果未指定 -T
,則必須指定 -U
與 -P
才能順利登入。
重要
bcp 公用程式使用整合式安全性以信任連線連線至 SQL Server 時,請使用 -T
選項 (信任連線),而非使用者名稱和密碼的組合。
bcp 公用程式連線到 SQL Database 或 Azure Synapse Analytics 時,不支援使用 Windows 驗證或 Microsoft Entra 驗證。 請使用 -U
和 -P
選項。
-U login_id
指定用來連線至 SQL Server 的登入識別碼。
-u
適用於:僅限於 Linux 和 macOS 的系統,適用於 bcp 18 版及更高版本。 Windows 不支援。
信任伺服器證書。
-v
報告 bcp 公用程式版本號碼和著作權。
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 }
適用於:Windows 專用。 Linux 和macOS上不支援。
利用舊版 SQL Server 的資料類型執行大量複製作業。 不是每個欄位都會出現這個選項的提示;它會使用預設值。
-
80
= SQL Server 2000 (8.x) -
90
= SQL Server 2005 (9.x) -
100
= SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x) -
110
= SQL Server 2012 (11.x) -
120
= SQL Server 2014 (12.x) -
130
= SQL Server 2016 (13.x) -
140
= SQL Server 2017 (14.x) -
150
= SQL Server 2019 (15.x) -
160
= SQL Server 2022 (16.x)
例如,若要產生 SQL Server 2000 (8.x) 不支援但是在更新版的 SQL Server 中導入的資料類型,請使用 -V80
選項。
如需詳細資訊,請參閱從舊版 SQL Server 匯入原生的字元格式資料。
-w
利用 Unicode 字元執行大量複製作業。 此選項不會對每個欄位要求輸入;它會使用 nchar 作為儲存類型,不使用前綴,\t
(製表字元)作為欄位分隔符,以及 \n
(換行字元)作為行結束符。
-w
與 -c
不相容。
如需詳細資訊,請參閱使用 unicode 字元格式匯入或是匯出資料 (SQL Server)。
-x
適用於:僅適用於 Windows。 Linux 和macOS上不支援。
這個選項搭配 format
與 -f
format_file 選項一起使用,會產生以 XML 為基礎的格式檔案,而非預設的非 XML 格式檔案。 匯入或匯出資料時,-x
無法運作。 如果沒有搭配 format
與 -f
format_file 一起使用,則會產生錯誤。
-Y[s|m|o]
適用於:僅限 Linux 和 macOS,適用於 bcp 18 版和更新版本。 Windows 不支援。
指定連線加密模式。 選項為嚴格、必要和選擇性。 在沒有任何參數的情況下使用 -Y
會使用強制加密模式,且相當於 -Ym
。
備註
安裝 Microsoft SQL Server 2019 (15.x) 工具時,就會安裝 bcp 13.0 用戶端。 如果針對多個版本的 SQL Server 安裝工具,視
PATH
環境變數的值順序而定,您可能會使用先前的 bcp 用戶端,而不是 bcp 13.0 用戶端。 這個環境變數定義了 Windows 用來搜尋可執行檔的一組目錄。 若要確定您使用的是哪個版本,請在 Windows 命令提示字元執行bcp -v
命令。 如需如何在PATH
環境變數中設定命令路徑的資訊,請參閱 環境變數 或在 Windows 說明中搜尋環境變數。若要確保正在執行的 bcp 公用程式是最新版本,您必須移除所有舊版的 bcp 公用程式。
若要判定所有已安裝 bcp 公用程式版本的位置,請在命令提示字元中輸入:
where bcp.exe
bcp 公用程式也可以從 Microsoft SQL Server 2016 功能套件個別下載。 選取
ENU\x64\MsSqlCmdLnUtils.msi
或ENU\x86\MsSqlCmdLnUtils.msi
。只有在同時安裝 SQL Server 工具和 SQL Server Native Client 時,才能支援 XML 格式檔案。
如需尋找 bcp 公用程式位置及其執行方式,以及命令提示字元公用程式語法慣例的相關資訊,請參閱 SQL 命令提示字元公用程式 (資料庫引擎)。
如需針對大量匯入或匯出作業準備資料的相關資訊,請參閱準備大量匯出或匯入的資料。
如需了解大量匯入作業中執行的資料列插入發生時如何記錄到交易記錄的資訊,請參閱大量匯入採用最低限度記錄的必要條件。
-
<
、>
、|
、&
與^
等字元為特殊的命令殼層字元,且在字串中使用這些字元時,必須在前方加上逸出字元 (^
) 或括在引號中 (例如"StringContaining&Symbol"
)。 如果您使用引號來括住包含特殊字元的字串,則引號會被視為環境變數值的一部分。
原生資料檔案支援
在 SQL Server 中,bcp 公用程式支援與從 SQL Server 2000 (8.x) 及更新版本開始的 SQL Server 版本相容的原生資料檔案。
計算資料行與時間戳記資料行
會忽略針對計算資料行或 timestamp 資料行匯入之資料檔案中的值,而且 SQL Server 會自動指派值。 如果資料檔案不包含資料表中計算資料行或 timestamp 資料行的值,請使用格式檔案指定,匯入資料時應略過資料表中的計算資料行或 timestamp 資料行;SQL Server 會自動指派資料行的值。
計算資料行和 timestamp 資料行會照常從 SQL Server 大量複製到資料檔案中。
指定要包含空格或引號的識別碼
SQL Server 識別碼可以包括內嵌空格和引號之類的字元。 您必須依照下列方式來處理這些識別碼:
當您在命令提示字元之下,指定包含空格或引號的識別碼或檔案名稱時,請用引號 ("") 括住識別碼。
例如,下列
bcp out
命令會建立名稱為Currency Types.dat
的資料檔案:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
若要指定包含空格或引號的資料庫名稱,您必須使用
-q
選項。如果擁有者名稱、資料表名稱或檢視表名稱包含內嵌的空格或引號,您可以:
指定
-q
選項,或者在引號內,用方括號 (
[]
) 括住擁有者、資料表或檢視表名稱。
資料驗證
bcp 現在會強制執行資料驗證與資料檢查,若針對資料檔案中無效的資料執行指令碼,則資料驗證與檢查作業可能會導致指令碼失敗。 例如, bcp 現在會驗證:
float 或 real 資料類型的原生表示法是有效的。
Unicode 資料的長度為偶數位元組。
可在舊版 SQL Server 大量匯入的無效資料形式,現在可能無法載入。不過,在舊版,除非用戶端嘗試存取無效資料,否則不會發生作業失敗的情況。 新增的驗證可以將在大量載入後查詢資料時的意外狀況減到最少。
大量匯出或是匯入 SQLXML 文件
若要大量匯出或匯入 SQLXML 資料,請在格式檔案中使用下列其中一種資料類型。
資料類型 | 效果 |
---|---|
SQLCHAR 或 SQLVARYCHAR |
資料是使用用戶端字碼頁或定序所隱含的字碼頁所傳送。 效果與指定 -c 開關而不指定格式檔案時相同。 |
SQLNCHAR 或 SQLNVARCHAR |
以 Unicode 格式傳送這份資料。 效果與指定 -w 開關但不指定格式文件相同。 |
SQLBINARY 或 SQLVARYBIN |
資料被傳送時未經任何轉換。 |
權限
bcp out
作業需要來源資料表的 SELECT
權限。
bcp in
作業最低需要目標資料表的 SELECT
/INSERT
許可權。 此外,如果下列任一條件成立,則需要 ALTER TABLE
許可權:
條件約束存在,且未指定
CHECK_CONSTRAINTS
提示。取消約束是預設設定。 若要明確啟用條件約束,請使用
-h
選項搭配CHECK_CONSTRAINTS
提示。觸發程式存在,且未指定
FIRE_TRIGGER
提示訊息。預設情況下,不會引發觸發。 若要明確引發觸發程式,請使用
-h
選項搭配FIRE_TRIGGERS
提示。您利用
-E
選項,從資料檔案匯入識別值。
注意
在 SQL Server 2005 (9.x) 中,需要在目標數據表上具有 ALTER TABLE
許可權。 由於用戶帳戶缺少針對目標數據表的 ALTER TABLE
許可權,如果 bcp 腳本未強制執行觸發程式和約束檢查,這項需求可能會導致其失敗。
字元模式 (-c
) 與原生模式 (-n
) 最佳做法
本節有字元模式 (-c
) 與原生模式 (-n
) 的建議事項。
(管理員/使用者) 儘可能使用原生格式 (
-n
),避免分隔符號問題。 使用 SQL Server 透過原生格式匯出和匯入。 如果資料要匯入非 SQL Server 資料庫,請使用-c
或-w
選項,從 SQL Server 匯出資料。(管理員)使用
bcp out
時確認數據。 例如,當您使用bcp out
、bcp in
,然後bcp out
確認資料已正確匯出,而且終止符值不會當做某些數據值的一部分使用。 請考慮使用隨機十六進位值來覆寫預設結束字元 (使用-t
和-r
選項),避免結束字元值與資料值之間發生衝突。(使用者) 使用長且唯一的結束字元 (任何位元組或字元序列),將實際字串值發生衝突的可能性降到最低。 這可透過使用
-t
和-r
選項完成。
範例
本節的範例會使用 WideWorldImporters
SQL Server 2016 (13.x) 和更新版本的範例資料庫、Azure SQL 資料庫 和 Azure SQL 受控執行個體。
WideWorldImporters
可以從 https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0 下載。 如需還原範例資料庫的語法,請參閱 RESTORE 陳述式。
範例測試條件
除非另有指定,否則範例假設您使用的是 Windows 驗證,並且與執行 bcp 命令的伺服器執行個體有信任連接。
D:\bcp
這個名稱的目錄用於許多範例。
下列 Transact-SQL 腳本會建立 WideWorldImporters.Warehouse.StockItemTransactions
數據表的空白複本,然後新增主鍵條件約束:
USE WideWorldImporters;
GO
SET NOCOUNT ON;
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
SELECT *
INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
FROM WideWorldImporters.Warehouse.StockItemTransactions
WHERE 1 = 2;
ALTER TABLE Warehouse.StockItemTransactions_bcp
ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp
PRIMARY KEY NONCLUSTERED (StockItemTransactionID ASC);
END
您可以視需要截斷 StockItemTransactions_bcp
資料表。
TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;
A. 確認 bcp 工具版本
請在命令提示字元之下,輸入下列命令:
bcp -v
B. 將資料表資料列複製到資料檔案 (使用信任連接)
下列範例說明 out
資料表上的 WideWorldImporters.Warehouse.StockItemTransactions
選項。
基本
這個範例會建立一個名稱為
StockItemTransactions_character.bcp
的資料檔案,且會利用 字元 格式,將資料表的資料複製到這個資料檔案中。請在命令提示字元之下,輸入下列命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
展開
這個範例會建立一個名稱為
StockItemTransactions_native.bcp
的資料檔案,而且會以原生格式,將資料表的資料複製到該檔案。 此範例也指定語法錯誤的數目上限、錯誤檔和輸出檔。請在命令提示字元之下,輸入下列命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\bcp\StockItemTransactions_native.bcp -m 1 -n -e D:\bcp\Error_out.log -o D:\bcp\Output_out.log -S -T
檢閱 Error_out.log
和 Output_out.log
。
Error_out.log
應為空白。 比較 StockItemTransactions_character.bcp
和 StockItemTransactions_native.bcp
之間的檔案大小。
C. 將資料表資料列複製到資料檔案 (使用混合模式驗證)
下列範例說明 out
資料表上的 WideWorldImporters.Warehouse.StockItemTransactions
選項。 這個範例會建立一個名稱為 StockItemTransactions_character.bcp
的資料檔案,且會利用 字元 格式,將資料表的資料複製到這個資料檔案中。
這個範例假設您使用的是混合模式驗證,而且您必須使用 -U
參數指定登入識別碼。 此外,除非您要連線至本機電腦的 SQL Server 預設執行個體,否則請使用 -S
參數指定系統名稱,並自行選擇是否指定執行個體名稱。
在命令提示字元輸入下列命令:(系統會提示您輸入密碼。)
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. 將檔案資料複製到資料表
下列範例使用先前建立的檔案,說明 in
資料表的 WideWorldImporters.Warehouse.StockItemTransactions_bcp
選項。
基本
這個範例使用先前建立的
StockItemTransactions_character.bcp
資料檔案。請在命令提示字元之下,輸入下列命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
展開
這個範例使用先前建立的
StockItemTransactions_native.bcp
資料檔案。 這個範例還使用提示TABLOCK
,並且指定批次大小、語法錯誤的數目上限、錯誤檔和輸出檔案。請在命令提示字元之下,輸入下列命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\bcp\Error_in.log -o D:\bcp\Output_in.log -S -T
檢閱
Error_in.log
和Output_in.log
。
E. 將特定資料行複製到資料檔案
若要複製特定資料行,您可以使用 queryout
選項。 下列範例只會將 StockItemTransactionID
資料表的 Warehouse.StockItemTransactions
資料行複製到資料檔案中。
請在命令提示字元之下,輸入下列命令:
bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T
F. 將特定資料列複製到資料檔案
若要複製特定資料列,您可以使用 queryout
選項。 下列範例只會將 Amy Trefl
資料表中名稱為 WideWorldImporters.Application.People
之連絡人的資料列複製到 Amy_Trefl_c.bcp
資料檔案中。
注意
-d
開關用來識別資料庫。
請在命令提示字元之下,輸入下列命令:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
G. 將查詢的資料複製到資料檔案
若要將 Transact-SQL 陳述式的結果集複製到資料檔案,請使用 queryout
選項。 下列範例會依照全名的方式,將 WideWorldImporters.Application.People
資料表中的名稱複製到 People.txt
資料檔案中。
注意
使用 -t
參數建立逗點分隔檔。
請在命令提示字元之下,輸入下列命令:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. 建立格式檔案
下列範例會針對 Warehouse.StockItemTransactions
資料庫中的 WideWorldImporters
資料表來建立三個不同的格式檔案。 查看每個已建立的檔案內容。
請在命令提示字元之下,輸入下列命令:
REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.fmt -c -T
REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_n.fmt -n -T
REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T
注意
若要使用 -x
切換,您必須使用 bcp 9.0 用戶端。 如需如何使用
如需詳細資訊,請參閱使用非 XML 格式檔案 (SQL Server) 和 XML 格式檔案 (SQL Server)。
一. 使用格式檔案以 bcp 大量匯入
若要在將資料匯入 SQL Server 的執行個體時使用先前建立的格式檔案,請使用 -f
參數搭配 in
選項。 例如,下列命令會利用先前建立的格式檔案 StockItemTransactions_character.bcp
,將 Warehouse.StockItemTransactions_bcp
資料檔案的內容大量複製到 StockItemTransactions_c.xml
資料表的複本中。
注意
使用 -L
參數僅匯入前 100 筆記錄。
請在命令提示字元之下,輸入下列命令:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
注意
當資料檔案欄位與資料表資料行不同 (如號碼、排序或資料類型) 時,格式檔案就非常有用。 如需詳細資訊,請參閱匯入或匯出資料使用的格式檔案 (SQL Server)。
J. 指定編碼頁
部分程式碼範例如下,示範在指定字碼頁 65001 時的bcp匯入︰
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. 使用自訂欄位和資料列結束符的範例輸出檔案
這個範例展示了兩個範例檔案,是透過 bcp 使用自訂欄位和資料列終結字元產生的。
在
tempdb
資料庫中建立一個資料表dbo.T1
,包含兩個資料行,ID
和Name
。USE tempdb; GO CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20)); GO INSERT INTO dbo.T1 VALUES (1, N'Natalia'); INSERT INTO dbo.T1 VALUES (2, N'Mark'); INSERT INTO dbo.T1 VALUES (3, N'Randolph'); GO
使用自訂欄位結束字元,從範例資料表
dbo.T1
產生輸出檔案。在此範例中,伺服器名稱為
MYSERVER
,且-t ,
指定自定義欄位終止符。bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
結果如下。
1,Natalia 2,Mark 3,Randolph
使用自訂欄位結束字元和自訂資料列結束字元,從範例資料表
dbo.T1
產生輸出檔案。在此範例中,伺服器名稱為
MYSERVER
,-t ,
會指定自定義欄位終止符,-r :
指定自定義數據列終止符。bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
結果集如下所示。
1,Natalia:2,Mark:3,Randolph:
注意
資料列終止符號會始終新增,即使在最後一筆記錄也不例外。 然而,欄位結束字元不會被添加到最後一個欄位。
其他範例
下列文章包含使用 bcp 的範例:
大容量導入或大容量匯出的數據格式 (SQL Server)
格式化檔案以匯入或匯出資料 (SQL Server)
相關內容
- 為大量匯出或匯入準備資料
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- 要匯入和匯出資料的格式檔案 (SQL Server)
取得協助
- 對 SQL 的想法:有任何協助改善 SQL Server 的建議嗎?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (標籤 sql-server):詢問 SQL Server 問題
- Stack Overflow (標籤 sql-server):SQL 開發問題的回答
- Microsoft SQL Server 授權條款及資訊
- 適用於商務使用者的支援選項
- 其他 SQL Server 說明與意見反應
參與編輯 SQL 文件
您知道您可以自行編輯 SQL 內容嗎? 如果你這樣做,不僅可以協助改善我們的文件,你還能被列為該頁面的貢獻者。
如需詳細資訊,請參閱如何貢獻於 SQL Server 文件