1. ホーム
  2. sql

[解決済み] BCPで予期せぬEOFが発生した

2022-03-01 15:27:58

質問

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

BCP IN -c -t, -rn -U -S -P SQL Server Native Client 11.0]Unexpected EOF encountered in BCP data file というエラーが表示されるのですが。

以下は、そのファイルを作成するために使用したスクリプトです。

 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)
)

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

解決方法は?

ファイルがタブ区切りである場合、列の区切り文字を指定するコマンドラインフラグを -t\t -t,