1

これはCSV形式の私のソースデータです:

4,23,2AY5623,7235623
4,23,2GP1207,1451207
4,23,2GQ6689,4186689

テーブル:

CREATE TABLE [dbo].[Table1](
    [idCodeLevel] [int] NOT NULL,
    [idFirm] [int] NOT NULL,
    [valCodeFrom] [varchar](15) NOT NULL,
    [valCodeTo] [varchar](15) NOT NULL
) ON [PRIMARY]

これは、一括インポートに使用しているコードです。

USE Test
GO

TRUNCATE TABLE Table1
GO

BULK INSERT Table1
  FROM 'C:\Temp\test.csv'
  WITH (
    FIELDTERMINATOR = ',',
    MAXERRORS=0,
    ROWTERMINATOR = '\n'
  )
GO

私が得ているエラーは次のとおりです。

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

なぜ失敗するのか誰かに教えてもらえますか?

グーグルで検索したところ、.fmt形式を使用する必要がある可能性があることがわかりました。しかし、どうすればcsvファイルをfmtに変換できますか。SQLテーブルからfmtファイルを作成するコードを見てきました。

あなたの助けをどうもありがとう!

4

2 に答える 2

1

csv のフィールド名の先頭に行がありますか? その場合は、バルク ステートメントに「FIRSTROW = 2」を追加する必要があります。そうでない場合は、すべて VARCHAR フィールドである新しいテーブルを作成してから、データを確認してください。おそらく、印刷されない文字など、予期しないデータに奇妙なものが含まれている可能性があります。テキストとしてインポートしてから、「SELECT ISNUMERIC([FIELD1]) FROM NEWTABLE」などを試してください。

于 2013-02-26T17:39:28.653 に答える
0

SQL インポート ウィザードを使用して、外部ファイルからデータをインポートします。

データベースを右クリック--->タスク--->インポート---->フラットファイルをソースとして指定し、宛先サーバーを選択します。

詳細については、SQL への CSV データのインポートをご覧ください。

于 2013-02-26T18:10:37.360 に答える