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
- insertar en un puesta en escena mesa
dbo.Employee_Staging
(sin elIDENTITY
columna) del archivo CSV - posiblemente edite / limpie / manipule sus datos importados
-
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ó.