Saltar al contenido

BULK INSERT con columna de identidad (incremento automático)

Hola usuario de nuestra página, tenemos la respuesta a lo que necesitas, desplázate y la verás a continuación.

Solución:

Agregue una columna de identificación al archivo csv y déjelo en blanco:

id,Name,Address
,name1,addr test 1
,name2,addr test 2

Eliminar la palabra clave KEEPIDENTITY de la consulta:

BULK INSERT Employee  FROM 'pathtempFile.csv ' 
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = 'n');

El campo de identidad id se incrementará automáticamente.

Si asigna valores al campo de id en el csv, se ignorarán a menos que use la palabra clave KEEPIDENTITY, luego se usarán en lugar del incremento automático.

No INSERTE A GRANEL en su real mesas directamente.

yo siempre

  1. insertar en un puesta en escena mesa dbo.Employee_Staging (sin el IDENTITY columna) del archivo CSV
  2. posiblemente edite / limpie / manipule sus datos importados
  3. y luego copie los datos en la tabla real con una declaración T-SQL como:

    INSERT INTO dbo.Employee(Name, Address) 
       SELECT Name, Address
       FROM dbo.Employee_Staging
    

Tuve un problema similar, pero necesitaba estar seguro de que el orden de la identificación se alinea con el orden en el archivo de origen. Mi solución es usar una VISTA para BULK INSERT:

Mantenga su tabla como está y cree esta VISTA (seleccione todo excepto la columna ID)

CREATE VIEW [dbo].[VW_Employee]
AS
SELECT [Name], [Address]
FROM [dbo].[Employee];

Su INSERTO A GRANEL debería verse así:

BULK INSERT [dbo].[VW_Employee] FROM 'pathtempFile.csv ' 
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = 'n');

valoraciones y reseñas

Recuerda algo, que tienes la capacidad de añadir una puntuación justa si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *