2

.txt ファイルのデータを sql-server db に挿入したいと考えています。.txt ファイルに PK-Variable がある場合とない場合の両方で試してみると、エラーが発生します。私のクエリ:

BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH
(FIELDTERMINATOR = ';') GO

  1. PK Var がないと、エラーが発生します。

行 1、列 1 (PK_ID) の一括読み込みデータ変換エラー (指定されたコードページのタイプの不一致または無効な文字)。メッセージ 4864、レベル 16、状態 1、行 1

  1. PK Var を使用すると、次のエラーが表示されます。

メッセージ 4864、レベル 16、状態 1、行 1 行 1、列 1 (PK_ID) の一括読み込みデータ変換エラー (型の不一致または指定されたコードページの無効な文字)。メッセージ 2627、レベル 14、状態 1、行 1 PRIMARY KEY 制約 'PK_Table' の違反。オブジェクト 'dbo.Table' に重複するキーを挿入できません。重複キーの値は (1) です。ステートメントは終了されました。

.txt ファイルの内容の例:

PK_ID; VName;NName;UserName;Sex
1;Smith;Smither;SM;male
2;Tim;Timmer;TI;male

自動インクリメントがオンになっています。

4

2 に答える 2

1

あなたの例の.txtを見てください。ファイルの内容、ヘッダーを行としてテーブルにロードしていると思います。試す:

BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH
    (FIELDTERMINATOR = ';',
     FIRSTROW=2)
GO
于 2013-06-27T18:08:33.913 に答える
1

私の解決策:上記の問題を解決できませんでした。一部のpplは、IDを列名としてtxtファイルに入れ、エントリを開いたままにしておくと言っていましたが((、Hans、Maier)として)、うまくいきませんでした。適切な方法は、ステージング テーブルを作成することであることがわかりました。ステージング テーブルは、データを一括挿入する主キーのない通常のテーブルです。ここでは、必要に応じてデータを操作できます。その後、そのステージング テーブルから目的のテーブルにデータを挿入します。あるテーブルから別のテーブルへのデータの挿入は、その方法をよく説明しています。良いことは、一括挿入では、更新しないデータを挿入するオプションが提供されるだけなので、テーブルを更新できることです。

于 2013-06-28T07:36:14.350 に答える