unexpected failed encountered data sql azure bcp

sql - unexpected eof encountered in bcp data file bcp copy in failed



EOF inesperado encontrado en BCP (5)

"EOF inesperado" normalmente significa que el terminador de columna o fila no es lo que espera. Es decir, los argumentos de línea de comandos para estos coinciden con el archivo

Causas típicas:

  • Terminales de línea Unix vs Windows
  • Datos de texto que contienen su delimitador de columna (coma en datos reales)
  • O una mezcla de los dos.

SSMS no debería tener nada que ver con eso: es el formato (esperado frente a real) lo que importa

Intentando importar datos a Azure. Creé un archivo de texto en Management Studio 2005. He intentado tanto un archivo de texto delimitado por comas como por tabuladores.

BCP IN -c -t, -r / n -U -S -PI obtiene el error {SQL Server Native Client 11.0] EOF inesperado encontrado en el archivo de datos BCP

Aquí está el script que utilicé para crear el archivo:

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>

Aquí está la tabla en la que se inserta

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

En realidad, hay varios cientos de miles de registros reales y lo he hecho desde un servidor diferente, la única diferencia es la versión de Management Studio.


Creo que la mayoría de nosotros preferimos ejemplos del mundo real que sugerencias de sintaxis, así que esto es lo que hice:

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

Mis datos eran un extracto de un Oracle DB basado en Unix que estaba delimitado por tabuladores y tenía un carácter de fin de línea de LF.

Como mis datos estaban delimitados por tabulaciones, no especifiqué un parámetro -t, el valor predeterminado de bcp es tab.

Como mi terminador de fila era un carácter LineFeed (LF), utilicé -r / r

Debido a que mis datos estaban siendo cargados en los campos de char usé el parámetro -c


Puede usar la utilidad de importación Sql Server Management Studio ( SSMS ) para importar el origen de archivo plano. Es fácil de usar, configurable, informa errores y ahorra tiempo.

  1. Haga clic derecho en su base de datos sql
  2. Elija Tareas> Importar datos ...
  3. En el Asistente de importación de datos de SSMS, elija origen de archivo plano, valide las asignaciones del esquema de archivo frente a base de datos e importe los datos

Si el archivo está delimitado por tabuladores, el indicador de línea de comando para el separador de columnas debe ser -t/t -t,


Solo un FYI me encontré con este mismo error exacto y resultó que mi tabla de destino contenía una columna extra que el archivo DAT.