Puede darse el caso de que encuentres alguna incompatibilidad con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.
Solución:
Vine aquí antes de buscar una solución para la inserción masiva de caracteres especiales. No me gustó la solución alternativa con UTF-16 (que duplicaría el tamaño del archivo csv). Descubrí que definitivamente PUEDES y es muy fácil, no necesitas un archivo de formato. Esta respuesta es para otras personas que buscan lo mismo, ya que no parece estar bien documentado en ninguna parte, y creo que este es un problema muy común para las personas que no hablan inglés. La solución es: simplemente agregue CODEPAGE=’65001′ dentro de la instrucción with de la inserción masiva. (65001=número de página de códigos para UTF-8). Puede que no funcione para todos los caracteres Unicode como sugiere Michael O, pero al menos funciona perfecto para latín extendido, griego y cirílico, probablemente muchos otros también.
Nota: la documentación de MSDN dice que utf-8 no es compatible, no lo crea, para mí esto funciona perfectamente en el servidor SQL 2008, sin embargo, no probé otras versiones.
p.ej:
BULK INSERT #myTempTable
FROM 'D:somefoldermyCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='n'
);
Si todos sus caracteres especiales están en 160-255 (iso-8859-1 o windows-1252), también puede usar:
BULK INSERT #myTempTable
FROM 'D:somefoldermyCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='n'
);
no puedes Primero debe usar un campo de datos de tipo N, convertir su archivo a UTF-16 y luego importarlo. La base de datos no es compatible con UTF-8.
- En Excel, guarde el archivo como CSV (delimitado por comas)
- Abra el archivo CSV guardado en el bloc de notas ++
- Codificación -> Convertir a UCS-2 Big Endian
- Salvar
INSERCIÓN A GRANEL #tmpData
FROM 'C:Book2.csv' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ';', --CSV field delimiter ROWTERMINATOR = 'n', --Use to shift the control to next row TABLOCK )
Hecho.
Si te gusta la idea, tienes el poder dejar un escrito acerca de qué le añadirías a este tutorial.