txt habilitar firstrow espaƱol ejemplos sql-server sql-server-2008 bulkinsert

sql server - habilitar - Error de "la columna es demasiado larga" con BULK INSERT



bulk insert sql server txt ejemplos (4)

A menos que el origen del archivo sea Unix, es probable que el terminador de fila del archivo sea realmente

/ r / n

Use un editor hexadecimal para validar el terminador del archivo, o simplemente intente eso como el terminador de fila.

Estoy intentando ejecutar el siguiente comando para insertar datos de forma masiva desde un archivo CSV:

BULK INSERT TestDB.dbo.patent FROM ''C:/1patents.csv'' WITH (FIRSTROW = 1, FIELDTERMINATOR = ''^'', ROWTERMINATOR=''/n'');

El error que estoy recibiendo es esto--

Msg 4866, Nivel 16, Estado 1, Línea 1
La carga masiva falló. La columna es demasiado larga en el archivo de datos para la fila 1, columna 6.
Verifique que el terminador de campo y el terminador de fila estén especificados correctamente.
Msg 7399, Nivel 16, Estado 1, Línea 1
El proveedor OLE DB "BULK" para el servidor vinculado "(nulo)" informó un error. El proveedor no dio ninguna información sobre el error.
Msg 7330, Nivel 16, Estado 2, Línea 1
No se puede obtener una fila del proveedor OLE DB "BULK" para el servidor vinculado "(nulo)".

Ahora estos son los datos en la primera fila--

00000001^^18360713^295^4^0

Y en la tabla, el último campo (correspondiente a la sexta columna de datos arriba = 0) es de tipo ''int''.

¿Qué estoy haciendo mal aquí? ¿Por qué estoy recibiendo el error anterior?


Como contesté anteriormente, tuve el mismo problema al importar un archivo csv en SQL Server. Estaba usando ROWTERMINATOR = ''/n'' y también intenté usar ''/r/n'' y ''/r'' . Ninguno de ellos funcionó.

Pero cuando se usa ROWTERMINATOR = ''0x0a'' la tabla se carga sin problemas.

No sé el "¿por qué?" detrás de esto, espero que alguien más pueda arrojar luz sobre él.


Enfrenté el problema similar y llegué a saber que, a menos que el archivo sea de tipo UNIX, está bien.

Cuando genere el archivo de formato ( .fmt o .xml ), observe la tercera columna desde la izquierda. Se llama longitud mínima de columna. A veces, el servidor SQL lo pone por defecto en 2, aunque no lo menciona en el script de creación. Cambie ese valor a 0 . A veces es posible que tenga que permitir NULL también, así que cambie eso a cero y debería funcionar ahora


Obtuve la extracción de Oracle / Unix. Reemplazé /r/n por ROWTERMINATOR = ''0x0a'' y funcionó para mí.
Muchas gracias !