從舊版 SQL Server 匯入原生與字元格式資料
在 SQL Server 2012 中,您可以透過 -V 參數使用 bcp,從 SQL Server 2000、SQL Server 2005 或 SQL Server 2008 匯入原生與字元格式資料。 -V 參數會讓 SQL Server 2012 使用指定之舊版 SQL Server 中的資料類型,而資料檔格式將會與舊版中的資料檔格式相同。
若要為資料檔指定舊版的 SQL Server,請使用 -V 參數搭配下列其中一個限定詞:
SQL Server 版本 |
限定詞 |
---|---|
SQL Server 2000 |
-V 80 |
SQL Server 2005 |
-V 90 |
SQL Server 2008 |
-V 100 |
SQL Server 2005 中所導入資料類型的解讀
SQL Server 2005 及更新的版本支援一些新的類型。 如果您想要將新的資料類型匯入舊版 SQL Server 中,您必須以舊版 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 和更新的版本匯出
當您使用 –V 80 參數從 SQL Server 2005 或更新的版本大量匯出資料時,處於原生模式的 nvarchar(max)、varchar(max)、varbinary(max)、XML 和 UDT 資料會與 4 位元組前置詞一起儲存,就像 text、image 和 ntext 資料一樣,而不是與 8 位元組前置詞一起儲存 (這是 SQL Server 2005 及更新版本的預設值)。
複製日期值
bcp 會使用 ODBC 大量複製 API。 因此,若要將日期值匯入 SQL Server,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...) 在這個案例中將不會失敗,但會截斷秒數值。 |
相關工作
若要使用大量匯入或大量匯出的資料格式
[Top]