標籤:大容量匯出 大容量匯入 bulk export bcp bulk import bulk insert
匯入來自早期版本的 SQL Server 的原生格式資料和字元格式設定資料
在 SQL Server 2014 中,您可以通過將 bcp 與 -V 開關一起使用,從 SQL Server 2000、SQL Server 2005、SQL Server 2008、SQL Server 2008 R2 或 SQL Server 2012 中匯入本機和字元格式設定資料。 -V 開關將使 SQL Server 2014 使用指定的 SQL Server 早期版本中的資料類型,並且資料檔案格式與早期版本中的格式相同。
若要為資料檔案指定 SQL Server 早期版本,可將 -V 開關與以下的任一限定符一起使用:
SQL Server 版本 |
限定符 |
SQL Server 2000 |
-V 80 |
SQL Server 2005 |
-V 90 |
SQL Server 2008 |
-V 100 |
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 |
UDT |
image |
image |
image |
* 此類型受本機支援。
UDT 表示使用者定義的類型。
使用 –V 80 進行匯出
當使用 –V80 開關大量匯出資料時,原生模式下的 nvarchar(max)、varchar(max)、varbinary(max)、XML 和 UDT 資料將像 text、image 和 ntext 資料一樣以帶有 4 個位元組的首碼形式儲存,而不是像 SQL Server 2005 及更高版本預設的那樣以帶有 8 個位元組的首碼形式儲存。
複製日期值
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...) 在這種情況下不會失敗,但會截斷秒值。 |
參考:
https://msdn.microsoft.com/zh-cn/library/ms191212.aspx
本文出自 “SQL Server Deep Dives” 部落格,請務必保留此出處http://ultrasql.blog.51cto.com/9591438/1628106
匯入來自早期版本的 SQL Server 的原生格式資料和字元格式設定資料