1. ホーム
  2. sql

[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)

2022-02-08 15:54:36

質問内容

テキストファイルをデータベースにインポートしようとすると、変換エラーが発生します。以下は、私が受け取ったエラーメッセージです。

1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定されたコードページに対して無効な文字)です。

以下は私のクエリコードです。

CREATE TABLE Students
(
    StudentNo    Integer NOT NULL Primary Key,
    FirstName    VARCHAR(40) NOT NULL,
    LastName     VARCHAR(40) NOT NULL,
    Year         Integer,
    GPA          Float NULL
);

以下は、テキストファイルのサンプルデータです。

100,Christoph,Van Gerwen,2011
101,Anar,Cooke,2011
102,Douglis,Rudinow,2008

何が問題なのか分かった気がします。以下は私の一括挿入コードです。

use xta9354
bulk insert xta9354.dbo.Students
from 'd:\userdata\xta9_Students.txt' 
with (fieldterminator = ',',rowterminator = '\n') 

サンプルデータでは、Year の後に別の属性 Grade があり、それが NULL であるにもかかわらず、Year 属性の後に ',' が存在しない。

どなたか、これを修正する方法を教えてください。

解決方法は?

を使用してみてください。 フォーマットファイル データファイルには4列しかないので それ以外の場合は、以下をお試しください。 OPENROWSET または演出用テーブルを使用する。

myTestFormatFiles.Fmt のように見えるかもしれません。

9.0
4
1 SQLINT 0 3 "," 1 StudentNo ""
2 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
4 SQLINT 0 4 4年 "


<サブ (出典 マイクロソフトドット・コム )

このチュートリアル での列の読み飛ばしについて BULK INSERT も有効な場合があります。

そのときの文は次のようになります。

USE xta9354
GO
BULK INSERT xta9354.dbo.Students
    FROM 'd:\userdata\xta9_Students.txt' 
    WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt')