共用方式為


使用字元格式匯入或匯出資料 (SQL Server)

若要將資料大量匯出到用於其他程式的文字檔,或是要從其他程式產生的文字檔大量匯入資料,建議您使用字元格式。

注意

當您在 MicrosoftSQL Server 實例與數據檔之間大量傳輸數據時,不包含任何擴充字元或 DBCS 字元,請使用 Unicode 字元格式。 如需詳細資訊,請參閱使用 Unicode 字元格式匯入或匯出資料 (SQL Server)

字元格式會在所有的資料行中使用字元資料格式。 當資料與另一個程式 (例如試算表) 搭配使用時,或當資料需要從另一個資料庫供應商 (例如 Oracle) 複製到 SQL Server 的執行個體時,以字元格式儲存資訊就很有用。

使用字元格式的考量

使用字元格式時,請考慮下列事項:

  • bcp 公用程式 預設會使用定位字元分隔字元資料欄位,並使用新行字元終止記錄。 如需如何指定其他結束字元的相關資訊,請參閱指定欄位與資料列結束字元 (SQL Server)

  • 依預設,在大量匯出或匯入字元模式資料之前,會執行下列轉換:

    大量作業的方向 轉換
    匯出 將資料轉換成字元表示法。 若有明確要求,則字元資料行中的資料會轉換成所要求的字碼頁。 若未指定字碼頁,則會使用用戶端電腦的 OEM 字碼頁來轉換字元資料。
    匯入 視需要將字元資料轉換成原生表示法,並將字元資料由用戶端字碼頁轉譯成目標資料行的字碼頁。
  • 若要避免在轉換期間遺失擴充字元,請使用 Unicode 字元格式,或指定字碼頁。

  • 儲存在字元格式檔案中的任何 sql_variant 數據,都未儲存元數據。 根據隱含數據轉換的規則,每個數據值都會轉換成 char 格式。 匯入資料 sql_variant 列時,資料會匯入為 char。 當匯入具有 非 sql_variant數據類型的數據行時,會使用隱含轉換從 char 轉換數據。 如需資料轉換的詳細資訊,請參閱資料類型轉換 (資料庫引擎)

  • bcp 公用程式會將值匯出money為字元格式數據檔,其中包含小數點之後的四位數,而且沒有任何數位群組符號,例如逗號分隔符。 例如, money 包含值 1,234,567.123456 的數據行會大容量導出至數據檔作為字元字串 1234567.1235。

字元格式的命令選項

您可以使用 bcp、BULK INSERT 或 INSERT 將字元格式資料匯入資料表中...SELECT * FROM OPENROWSET(BULK...)。針對 bcp 命令或 BULK INSERT 語句,您可以在命令行上指定資料格式。 對於 INSERT...SELECT * FROM OPENROWSET(BULK...) 陳述式,您必須在格式檔案中指定資料格式。

下列命令列選項支援字元格式:

Command 選項 描述
bcp -c 讓 bcp 公用程式使用字元數據。1
BULK INSERT DATAFILETYPE ='char' 於大量匯入資料時使用字元格式。

1 若要將字元 (-c) 資料載入與舊版 SQL Server 用戶端相容的格式,請使用 -V 參數。 如需詳細資訊,請參閱 從舊版 SQL Server 匯入原生與字元格式資料

如需詳細資訊,請參閱 bcp 公用程式BULK INSERT(Transact-SQL)OPENROWSET (Transact-SQL)。

注意

或者,您可以在格式檔案中按照每個欄位指定格式。 如需詳細資訊,請參閱匯入或匯出資料的格式檔案 (SQL Server)

範例

下列範例示範如何使用 bcp 大容量導出字元數據,並使用 BULK INSERT 大容量導入相同的數據。

範例資料表

這些範例會要求在 dbo 架構下的 AdventureWorks 範例資料庫中建立名為 myTestCharData 數據表的數據表。 您必須先建立這個資料表,才能執行範例。 若要建立此數據表,請在 SQL SQL Server Management Studio 查詢編輯器 中執行:

USE AdventureWorks;  
GO  
CREATE TABLE myTestCharData (  
   Col1 smallint,  
   Col2 nvarchar(50),  
   Col3 nvarchar(50)  
   );   

若要填入此數據表並檢視產生的內容,請執行下列語句:

INSERT INTO myTestCharData(Col1,Col2,Col3)  
   VALUES(1,'DataField2','DataField3');  
INSERT INTO myTestCharData(Col1,Col2,Col3)  
   VALUES(2,'DataField2','DataField3');  
GO  
SELECT Col1,Col2,Col3 FROM myTestCharData  
  

使用 bcp 大容量匯出字元數據

若要將數據從數據表匯出至數據檔,請使用 bcp 搭配 out 選項和下列限定符:

限定詞 描述
-c 指定字元格式。
-t , 指定逗號 (,) 作為欄位結束字元。

注意:預設欄位終止符是製表元(\t)。 如需詳細資訊,請參閱指定欄位與資料列結束字元 (SQL Server)
-T 指定 bcp 公用程式使用整合式安全性的信任連接,連接至 SQL Server。 如果未指定 -T ,則必須指定 -U-P ,才能順利登入。

下列範例會將數據表中字元格式 myTestCharData 的數據大量匯出至名為 myTestCharData-c.Dat 數據檔的新數據檔,以逗號 (,) 作為欄位終止符。 在 Microsoft Windows 命令提示字元中,輸入:

bcp AdventureWorks..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T  
  

使用 BULK INSERT 大容量導入字元數據

下列範例會使用 BULK INSERT 將數據檔案中的數據 myTestCharData-c.Dat 匯入 myTestCharData 數據表中。 在 SQL Server Management Studio 查詢編輯器 中,執行:

USE AdventureWorks;  
GO  
BULK INSERT myTestCharData   
   FROM 'C:\myTestCharData-c.Dat'   
   WITH (  
      DATAFILETYPE='char',  
      FIELDTERMINATOR=','  
   );   
GO  
SELECT Col1,Col2,Col3 FROM myTestCharData;  
GO  
  

相關工作

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

另請參閱

bcp 公用程式
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
資料類型 (Transact-SQL)
從舊版 SQL Server 匯入原生與字元格式資料