從舊版 SQL Server 匯入原生與字元格式資料

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

在 SQL Server 2014 (12.x) 和更新版本中,您可以藉由使用 -V 參數,以 bcp 從 SQL Server 2000 (8.x)、SQL Server 2005 (9.x)、SQL Server 2008 (10.0.x)、SQL Server 2008 R2 (10.50.x) 或 SQL Server 2012 (11.x) 匯入原生和字元格式資料。 -V 參數會讓 SQL Server 使用指定之舊版 SQL Server 中的資料類型,而資料檔案格式將會與舊版中的資料檔案格式相同。

若要為資料檔案指定舊版的 SQL Server,請使用 -V 參數搭配下列其中一個限定詞:

SQL Server 版本 Qualifier
SQL Server 2000 (8.x) -V80
SQL Server 2005 (9.x) -V90
SQL Server 2008 (10.0.x) -V100
SQL Server 2012 (11.x) -V 110

資料類型的解譯

SQL Server 2005 (9.x) 及更新版本支援一些新的類型。 如果您想要將新資料類型匯入舊版 SQL Server 中,則必須以舊版 bcp 用戶端可讀取的格式來儲存資料類型。 下表摘述如何轉換新資料類型,以便與舊版 SQL Server 相容。

SQL Server 2005 的新資料類型 與 6x版相容的資料類型 與 70 版相容的資料類型 與 80 版相容的資料類型
bigint decimal decimal *
sql_variant text nvarchar(4000) *
varchar(max) text text text
nvarchar(max) ntext ntext ntext
varbinary(max) image image image
XML ntext ntext ntext
UDT** image image image

*這是原本就支援的類型。

**UDT 表示使用者定義類型。

使用 -V 80 匯出

當您使用 -V80 參數大量匯出資料時,處於原生模式的 nvarchar(max)varchar(max)varbinary(max)、XML 和 UDT 資料會與 4 位元組前置詞一起儲存﹑如同 textimagentext 資料,而不是與 8 位元組前置詞一起儲存 (這是 SQL Server 2005 (9.x) 和更新版本的預設)。

複製日期值

bcp 會使用 ODBC 大量複製 API。 因此,若要將日期值匯入 SQL Server,bcp 會使用 ODBC 日期格式 (yyyy-mm-dd hh:mm:ss[.f...])。

bcp 命令會針對 datetimesmalldatetime 值使用 ODBC 預設格式來匯出字元格式資料檔案。 例如,包含日期 datetime 12 Aug 1998 資料行會以字元字串 1998-08-12 00:00:00.000大量複製到資料檔案。

重要

使用 bcp 將資料匯入 smalldatetime欄位時,請確定秒數值是 00.000;否則作業將會失敗。 smalldatetime 資料類型只會保留最接近分鐘數的數值。 BULK INSERT 及 INSERT ...SELECT * FROM OPENROWSET(BULK...) 在這個案例中將不會失敗,但會截斷秒數值。

相關工作

若要使用大量匯入或大量匯出的資料格式

另請參閱

bcp 公用程式
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
資料類型 (Transact-SQL)
SQL Server Database Engine 回溯相容性
CAST 和 CONVERT (Transact-SQL)