Share via


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

若要使用 bcp,從 MicrosoftSQL Server 2005 或舊版匯入原生與字元格式資料,請使用 -V 參數。指定 -V 參數時,MicrosoftSQL Server 2008 會使用舊版 MicrosoftSQL Server 中的資料類型,而資料檔格式將會與舊版中的資料檔格式相同。

若要指定資料檔是否屬於舊版的 SQL Server,請使用 -V 參數,如下所示:

SQL Server 版本

限定詞

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

SQL Server 資料類型的解讀

SQL Server 2005 及更新的版本支援一些新的類型。如果您想要將新的資料類型匯入舊版中,您必須以舊版 bcp 用戶端可讀取的格式儲存該資料類型。下表摘述如何轉換 SQL Server 2005 的新資料類型,以便與舊版 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

UDT1

image

image

image

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

1 UDT 表示使用者定義型別。

從 SQL Server 2005 和更新的版本匯出

當您使用 –V80 參數從 SQL Server 2005 或更新的版本大量匯出資料時,處於原生模式的 nvarchar(max)、varchar(max)、varbinary(max)、XML 和 UDT 資料會與 4 位元組前置詞一起儲存,就像 text、image 和 ntext 資料一樣,而不是與 8 位元組前置詞一起儲存 (這是 SQL Server 2005 及更新版本的預設值)。

從 SQL Server 7.0 或 SQL Server 2000 匯出

從 SQL Server 7.0 或 SQL Server 2000 大量匯出資料時,請考慮下列情況:

  • 在 SQL Server 7.0 及 SQL Server 2000 中,值 0 代表長度為零的資料行。

  • 從 SQL Server 7.0 匯出之 bigint 資料的儲存格式,取決於資料檔的資料格式而定:

    • 在原生模式或 Unicode 原生格式資料檔中,bigint 資料會儲存為 decimal(19,0)。

    • 在字元模式或 Unicode 字元格式資料檔中,bigint 資料會儲存為字元,或儲存為 [-]digits 的 Unicode 字串 (例如,–25688904432)。

複製日期值

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

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

重要注意事項重要事項

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