次の方法で共有


文字形式を使用したデータのインポートまたはエクスポート (SQL Server)

後で別のプログラムで使われるテキスト ファイルにデータを一括エクスポートする場合や、別のプログラムにより生成されたテキスト ファイルからデータを一括インポートする場合は、文字形式の使用をお勧めします。

Note

MicrosoftSQL Server のインスタンスと、拡張文字や DBCS 文字を含まない Unicode 文字データを含むデータ ファイル間でデータの一括転送を行う場合は、Unicode 文字形式を使用します。 詳細については、「Unicode 文字形式を使用したデータのインポートまたはエクスポート (SQL Server)」を参照してください。

文字形式では、すべての列に文字データ形式が使用されます。 データがスプレッドシートなどの別のプログラムで使用されるとき、または Oracle など別のデータベース ベンダーの製品から SQL Server のインスタンスにデータをコピーする必要があるときは、文字形式で情報を格納すると便利です。

文字形式の使用に関する注意点

文字形式を使用するときは、以下の点を考慮してください。

  • 既定では、 bcp ユーティリティは文字データ フィールドをタブ文字で区切り、改行文字でレコードを終了します。 別のターミネータの指定方法の詳細については、「フィールド ターミネータと行ターミネータの指定 (SQL Server)」を参照してください。

  • 既定では、キャラクター モードのデータの一括エクスポートまたは一括インポートを行う前に、次の変換が実行されます。

    一括操作の方向 変換
    エクスポート データを文字表現に変換します。 明示的に要求された場合は、データが文字の列ごとに要求されたコード ページに変換されます。 コード ページが指定されていない場合は、文字データはクライアント コンピューターの OEM コード ページを使用して変換されます。
    [インポート] 必要に応じて、文字データをネイティブ表現に変換し、クライアントのコード ページから目的の列のコード ページに変換します。
  • 変換中に拡張文字が失われないようにするには、Unicode 文字形式を使用するか、コード ページを指定します。

  • sql_variant データが文字形式ファイルに保存される場合は、メタデータなしで保存されます。 各データ値は、暗黙的なデータ変換の規則に従って char 形式に変換されます。 sql_variant 型の列にインポートされるときは、char 型のデータとしてインポートされます。 sql_variant 型以外のデータ型の列にインポートされるときは、暗黙の変換を使用して char から変換されます。 データ変換の詳細については、「データ型の変換 (データベース エンジン)」を参照してください。

  • bcp ユーティリティは、小数点の後に 4 桁の数字を含む文字形式のデータ ファイルとして値をエクスポートmoneyし、コンマ区切り記号などの数字グループ化記号を使用しません。 たとえば、値 1,234,567.123456 を含む money 型の列は、文字列 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 以前のバージョンの SQL Server クライアントと互換性のある形式に文字 (-c) データを読み込むには、-V スイッチを使用します。 詳細については、「 以前のバージョンの SQL Server からのネイティブ形式データおよび文字形式データのインポート」をご覧ください。

詳細については、「 bcp ユーティリティ」、「 BULK INSERT (Transact-SQL)」、または 「OPENROWSET (Transact-SQL)」を参照してください。

注意

また、フォーマット ファイルでフィールドごとに形式を指定することもできます。 詳細については、「データのインポートまたはエクスポート用のフォーマット ファイル (SQL Server)」を参照してください。

次の例では、文字データを bcp を使用して一括インポートする方法と、同じデータを bcp INSERT を使用して一括インポートする方法を示しています。

サンプル テーブル

次の例を実行するには、 dbo スキーマに基づいて、 myTestCharData という名前のテーブルを AdventureWorks サンプル データベース内に作成する必要があります。 このテーブルを作成しないと、例を実行できません。 このテーブルを作成するには、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 を使用した文字データの一括エクスポート

テーブルからデータ ファイルにデータをエクスポートするには、 bcpout オプションと次の修飾子を組み合わせて使用します。

修飾子 説明
-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  
  

Related Tasks

一括インポートまたは一括エクスポートのデータ形式を使用するには

参照

bcp ユーティリティ
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
データ型 (Transact-SQL)
以前のバージョンの SQL Server からのネイティブ形式データおよび文字形式データのインポート