web-dev-qa-db-ja.com

予期しないEOF BCPで発生しました

Azureにデータをインポートしようとしています。 Management Studio 2005でテキストファイルを作成しました。コンマとタブ区切りの両方のテキストファイルを試しました。

BCP IN -c -t、-r\n -U -S -Pエラーが表示されます{SQL Server Native Client 11.0]予期しないEOF BCPデータファイルで発生しました

これが、ファイルの作成に使用したスクリプトです。

 SELECT top 10  [Id]
      ,[RecordId]
      ,[PracticeId]
      ,[MonthEndId]
      ,ISNULL(CAST(InvoiceItemId AS VARCHAR(50)),'') AS InvoiceItemId
      ,[Date]
      ,[Number]
      ,[RecordTypeId]
      ,[LedgerTypeId]
      ,[TargetLedgerTypeId]
      ,ISNULL(CAST(Tax1Id as varchar(50)),'')AS Tax1Id
      ,[Tax1Exempt]
      ,[Tax1Total]
      ,[Tax1Exemption]
      ,ISNULL(CAST([Tax2Id] AS VARCHAR(50)),'') AS Tax2Id
      ,[Tax2Exempt]
      ,[Tax2Total]
      ,[Tax2Exemption]
      ,[TotalTaxable]
      ,[TotalTax]
      ,[TotalWithTax]
      ,[Unassigned]
      ,ISNULL(CAST([ReversingTypeId] AS VARCHAR(50)),'') AS ReversingTypeId
      ,[IncludeAccrualDoctor]
      ,12 AS InstanceId
  FROM <table>

これが挿入されるテーブルです

CREATE TABLE [WS].[ARFinancialRecord](
    [Id] [uniqueidentifier] NOT NULL,
    [RecordId] [uniqueidentifier] NOT NULL,
    [PracticeId] [uniqueidentifier] NOT NULL,
    [MonthEndId] [uniqueidentifier] NOT NULL,
    [InvoiceItemId] [uniqueidentifier] NULL,
    [Date] [smalldatetime] NOT NULL,
    [Number] [varchar](17) NOT NULL,
    [RecordTypeId] [tinyint] NOT NULL,
    [LedgerTypeId] [tinyint] NOT NULL,
    [TargetLedgerTypeId] [tinyint] NOT NULL,
    [Tax1Id] [uniqueidentifier] NULL,
    [Tax1Exempt] [bit] NOT NULL,
    [Tax1Total] [decimal](30, 8) NOT NULL,
    [Tax1Exemption] [decimal](30, 8) NOT NULL,
    [Tax2Id] [uniqueidentifier] NULL,
    [Tax2Exempt] [bit] NOT NULL,
    [Tax2Total] [decimal](30, 8) NOT NULL,
    [Tax2Exemption] [decimal](30, 8) NOT NULL,
    [TotalTaxable] [decimal](30, 8) NOT NULL,
    [TotalTax] [decimal](30, 8) NOT NULL,
    [TotalWithTax] [decimal](30, 8) NOT NULL,
    [Unassigned] [decimal](30, 8) NOT NULL,
    [ReversingTypeId] [tinyint] NULL,
    [IncludeAccrualDoctor] [bit] NOT NULL,
    [InstanceId] [tinyint] NOT NULL,
 CONSTRAINT [PK_ARFinancialRecord] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)

実際には数十万の実際のレコードがあり、私はこれを別のサーバーから実行しました。唯一の違いは、管理スタジオのバージョンです。

7
alemus

ファイルがタブ区切りの場合、列区切りのコマンドラインフラグは-t\t-t,

3
maxymoo

「予期しないEOF」とは、通常、列または行のターミネーターが期待どおりでないことを意味します。つまり、これらのコマンドライン引数はファイルと一致します

典型的な原因:

  • UnixとWindowsの行末
  • 列区切り文字を含むテキストデータ(実際のデータのカンマ)
  • または、2つの組み合わせ。

SSMSはそれとは何の関係もないはずです。重要なのはフォーマット(予想vs実際)です

3
gbn

これとまったく同じエラーが発生し、宛先テーブルにDATファイルよりも1列多く含まれていることがわかりました。

2
Scooter

ExcelでCSVファイルを開き、新しいCSVファイルとして「保存」します

enter image description here

1
Hussain

私はこのエラーに遭遇したすべてのケースで、テーブルの列の数がテキストファイルで区切られた列の数と一致しないという問題になります。これを確認する簡単な方法は、テキストファイルをExcelに読み込み、列数をテーブルの数と比較することです。

1
Clark Vera

私たちのほとんどは、構文のヒントよりも実際の例を好むと思います。

bcp LoadDB.dbo.test in C:\ temp\test.txt -S 123.66.108.207 -U testuser -P testpass -c -r/r

私のデータは、タブ区切りで、LF行末文字が含まれていたUnixベースのOracle DBからの抜粋です。

データはタブで区切られていたため、-tパラメーターを指定しなかったため、bcpのデフォルトはタブです。

行の終端文字がLineFeed(LF)文字だったため、-r/rを使用しました

データがすべてcharフィールドに読み込まれていたため、-cパラメータを使用しました

1
Dave Fish

この問題について私の経験を共有します。ユーザーからUTF-8エンコーディングが送信されてきましたが、すべて問題なく動作していました。 UCS-2 LE BOMでエンコードをエンコードに更新すると、ロードが失敗し始めました。これらの設定を確認するには、notepad ++を使用してください。

UTF-8に戻すと問題が解決しました。

これは link で問題を解決するのに役立ちました。

enter image description here

0
ProgSky