2014-10-13 4 views
3

데이터를 Azure로 가져 오려고합니다. Management Studio 2005에서 텍스트 파일을 만들었습니다. 쉼표와 탭으로 구분 된 텍스트 파일을 모두 시도했습니다.BCP에서 예기치 않은 EOF가 발생했습니다.

내가 사용

은 BCP IN -c -t, -r \ n -U -S -P 나는 오류 {SQL 서버 네이티브 클라이언트 11.0] 예기치 않은 EOF는 BCP 데이터 파일 여기에

에서 발생되는 스크립트 이 수십만 실제 기록이 실제로 나는이 differen에서이 작업을 수행 한 다음

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 서버, 유일한 다름은 관리 스튜디오의 버전 인.

답변

3

을 중요한 (실제 대 예상) 형식의 -t\t-t,

+0

은'-t "이어야합니다. \ t"'? 내가했던 것처럼'-S "ServerName"-U "UserName"'? 또한'-t '는 무엇입니까? –

+1

따옴표를 사용하지 않는다면,'-t'는 필드 종결 자의 약자입니다. – maxymoo

+3

사실'tab'으로 구분 된 값은'bcp'의 기본값입니다. 그래서'-t'와' r '. 그게 내가 직접 경험 한거야. – Daria

2

"예기치 않은 EOF"일반적 의미는 열을 의미 또는 행 종결은이에 대한 명령 줄 인수는 파일을

일반적인 원인과 일치 할 수있다 기대되지 않습니다 :

  • 유닉스 대를 Windows 줄 끝
  • 열 구분 기호 (실제 데이터의 쉼표)가 포함 된 텍스트 데이터
  • 또는 둘을 혼합 한 것.

SSMS는 무관해야한다 : 열 분리에 대한 명령 줄 플래그가해야이 파일이 탭으로 구분 된 다음의 경우

+0

음 Notepad ++에서 열었고 행 종결자는 CRLF입니다. 찾을 수있는 포함 쉼표가 없지만 탭으로 구분할 때 동일한 오류가 발생했습니다. – alemus

+0

@alemus : 명령 행에'-r \ n'이 있는데, LF입니다. CR이 혼란스러운 일일 수도 있습니다. – gbn

1

정확히 똑같은 오류가 발생하여 대상 테이블에 DAT 파일보다 하나의 열이 더 많았습니다.

0

나는 그래서 여기에 내가 무슨 짓을했는지, 우리의 대부분 구문 힌트보다 실제 사례를 선호 생각 :

BCP LoadDB.dbo.test C에서 : \ TEMP \ TEST.TXT -S 123.66.108.207을 - U testuser -P testpass -c -r/r

내 데이터는 유선 기반의 Oracle DB에서 추출한 것으로, 탭으로 구분되고 LF 행 끝 문자가 있습니다.

데이터가 탭으로 구분 되었기 때문에 -t 매개 변수를 지정하지 않았으므로 bcp 기본값은 탭입니다. 내 행 종결은 라인 피드 (LF) 문자가 있었기 때문에

후 내 데이터가 모든 문자 필드에로드되는 있었기 때문에 내가

0

사용할 수있는 -c 매개 변수를 사용 -r/R

을 사용 SQL Server Management Studio (SSMS) 가져 오기 플랫 파일 원본을 가져 오는 유틸리티입니다. 사용자 친화적이고 구성 가능하며 유효한 오류를보고하고 시간을 절약합니다.

  1. 에서, SSMS 데이터 가져 오기 마법사에서
  2. .. 작업> 데이터 가져 오기를 선택 플랫 파일 소스를 선택, 데이터베이스 스키마 대 파일에서 매핑을 확인하여 SQL 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 데이터를 가져옵니다