從舊版 SQL Server 匯入原生與字元格式資料
在 SQL Server 2014 中,您可以使用bcp從 SQL Server 2000、SQL Server 2005、SQL Server 2008、SQL Server 2008 R2 或 SQL Server 2012 使用-V參數匯入原生和字元格式資料。 -V參數會使 SQL Server 2014 使用來自指定舊版SQL Server的資料類型,而資料檔案格式與該舊版的格式相同。
若要為資料檔案指定舊版的 SQL Server,請使用 -V 參數搭配下列其中一個限定詞:
SQL Server 版本 | Qualifier |
---|---|
SQL Server 2000 | -V80 |
SQL Server 2005 | -V90 |
SQL Server 2008 | -V100 |
SQL Server 2012 | -V 110 |
資料類型的解譯
SQL Server 2005 和更新版本支援某些新類型。 如果您想要將新資料類型匯入舊版 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 |
UDT1 | image |
image |
image |
* 這是原本就支援的類型。
1 UDT 表示使用者定義類型。
使用 -V 80 匯出
當您使用-V80參數、、 nvarchar(max)
、 varchar(max)
varbinary(max)
XML 和 UDT 資料在原生模式中大量匯出資料時,會以 4 位元組前置詞儲存,例如 text
、 image
和資料 ntext
,而不是使用 8 位元組前置詞,這是 2005 和更新版本SQL Server預設值。
複製日期值
bcp 會使用 ODBC 大量複製 API。 因此,若要將日期值匯入 SQL Server,bcp 會使用 ODBC 日期格式 (yyyy-mm-dd hh:mm:ss[.f...])。
bcp命令會使用 和 smalldatetime
值的 ODBC 預設格式匯出字元格式 datetime
資料檔案。 例如,包含日期 12 Aug 1998
的 datetime
資料行會以字元字串 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)