2012-10-24 23 views
14

データベースにテキストファイルをインポートしようとすると変換エラーが発生します。以下は、私が受け取ったエラーメッセージです。1行4列の一括読み込みデータ変換エラー(指定したコードページの型が一致しないか無効な文字)

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

は、私のクエリコードです:

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

私は問題is..Belowが私の一括挿入コードが何であるかを知っていると思う:ここ

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

は、テキストファイルからのサンプルデータは、次のとおりです。

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

サンプルデータでは、さらに別の属性Graが存在するにもかかわらず、年属性の後に '、'はありません年末年始はNULLです

誰かがこの問題を解決する方法を教えてください。

+1

5列の表に4列を挿入しているようです。フォーマットファイルを使用していますか?書式設定によっては、行末に余分なASCII文字が検出されている可能性があります。 – Kermit

答えて

19

データファイルには4列しかないため、format fileをお試しください。それ以外の場合は、OPENROWSETを試すか、ステージングテーブルを使用してください。

myTestFormatFiles.Fmtは次のようになります。BULK INSERTで列をスキップ上

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  "\r\n" 4  Year   "

http://i.msdn.microsoft.com/dynimg/IC45684.gif

This tutorialをも助けるかもしれません。

あなたの文は、次にようになります。私の場合は

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

、私はLinuxボックス上にHadoopによって生成されたファイルを扱いました。私はSQLにインポートしようとしたときに私はこの問題があった。フィックスアップは、改行値 '0x0a'の16進値を使用することです。また、一括挿入にも役立ちます

bulk insert table from 'file' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '0x0a') 
関連する問題