Saltar al contenido

Barra invertida adicional cuando SELECCIONE … EN EL OUTFILE … en MySQL

Esta duda se puede resolver de diferentes maneras, por lo tanto te damos la respuesta más completa para nosotros.

Solución:

Prueba esto:

SELECT * FROM business WHERE id > 0 AND id <= 20000 INTO OUTFILE "business.csv"
fields terminated by ',' OPTIONALLY ENCLOSED BY '"' escaped by '"' 
LINES TERMINATED BY 'n';

Creo que el problema es que MySQL está tratando de escapar de la nueva línea (' n') en sus campos de texto porque es su terminador de línea.

FIELDS ESCAPED BY controla cómo escribir caracteres especiales. Si el carácter FIELDS ESCAPED BY no está vacío, se utiliza como prefix que precede a los siguientes caracteres en la salida:

El carácter CAMPOS ESCAPADOS POR

Los campos [OPTIONALLY] ENCERRADO POR carácter

El primer carácter de los valores FIELDS TERMINATED BY y LINES TERMINATED BY

ASCII NUL (el byte de valor cero; lo que realmente se escribe después del carácter de escape es ASCII "0", no un byte de valor cero)

(MySQL)

Realmente no entiendo por qué está haciendo lo que está haciendo en su caso, pero pude obtener algo así en mi Mac y la consulta anterior pareció arreglar el resultado en mi caso.

¡Espero que ayude!

Parece que es imposible que una exportación de MySQL exporte correctamente tanto las líneas nuevas como las comillas.

Al exportar, MySQL escapará automáticamente de ambos

  • Delimitadores de campo, y
  • Delimitadores de línea

De forma predeterminada, el carácter de escape es una barra invertida. Puede anular esto agregando ESCAPED BY '' a su consulta.

Desafortunadamente, en un archivo CSV "normal" (compatible con Excel), probablemente desee codificaciones diferentes para saltos de línea y comillas. Específicamente, desea que las líneas nuevas no tengan escape y las comillas se dupliquen.

Por ejemplo, si un valor contiene una nueva línea como esta:

esta es la linea 1
Y esta es la "Línea 2", que contiene comillas

debería convertirse

"Esta es la línea 1
Y esta es ""Línea 2"", que contiene comillas"

La solución que encontré fue escapar previamente de las comillas y agregar ESCAPED BY '' (un vacío string) a mi consulta.

SELECT REPLACE(field1, '"', '""'),  
       REPLACE(field2, '"', '""'),  
       ...  
FROM ...  
WHERE ...  
INTO OUTFILE '/someFile.csv'  
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY ''  
LINES TERMINATED BY 'n'

Reseñas y valoraciones

Tienes la posibilidad dar recomendación a esta división si si solucionó tu problema.

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