Saltar al contenido

¿Cómo escribir caracteres UTF-8 usando inserción masiva en SQL Server?

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.

  1. En Excel, guarde el archivo como CSV (delimitado por comas)
  2. Abra el archivo CSV guardado en el bloc de notas ++
  3. Codificación -> Convertir a UCS-2 Big Endian
  4. 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.

¡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 *