Carga BigQuery con nueva línea
Sé que podemos usar la opción de nuevas líneas clasificadas en BQ. Pero mis datos no están cargando incluso con esta opción. No tengo idea de por qué está rompiendo la carga.
Línea CSV:
"49602"|"AFFF7240654213"|"FROM MASTER: TESTing part. Goodluck: example.com/wp.png (tarifado)
"|"MO"|||0.000|0.000|50.7000|"NET"
Me está dando este error.
Error while reading data, error message: Error detected while parsing row starting at position: 436388389. Error: Missing close double quote (") character.
Pero con allow-quoted-newline
Debería funcionar bien?
También aquí está la exacta columna de Postgres (la fuente de datos)
FROM MASTER: TESTing part. Goodluck: example.com/wp.png (tarifado) \r
\r
Pregunta hecha hace 3 años, 4 meses, 29 días - Por codeglitch
3 Respuestas:
-
Guardé su línea CSV de muestra en una prueba. csv archivo y cuando se ejecuta
bq load --autodetect --source_format=CSV dataset.test_table "gs://my-bucket/test.csv"
de hecho veo el mismo error
Error detected while parsing row starting at position: 0. Error: Missing close double quote (") character.
Sin embargo, al agregar la bandera para permitir nuevas líneas citadas funcionó bien
bq load --autodetect --allow_quoted_newlines --source_format=CSV dataset.test_table "gs://my-bucket/test.csv"
Y la mesa de barbacoa, test_table parece así
Row int64_field_0 string_field_1 string_field_2 string_field_3 string_field_4 string_field_5 double_field_6 double_field_7 double_field_8 string_field_9 1 49602 AFFF7240654213 Parte de ensayo. Goodluck: example.com/wp.png (tarifado) MO nulo nulo 0,0 0,0 50,7 NET Respondida el Dec 17, 2020 a las 13:51 - por htmlhelix
Votos positivos: 0 | Votos negativos: 0 -
El error que estás experimentando se debe a que la opción
allow-quoted-newline
en BigQuery no está funcionando correctamente en este caso. La presencia de nuevas líneas dentro de un campo entre comillas puede ser problemática, ya que BigQuery no es capaz de interpretar correctamente esta estructura de datos sin un cierre de comillas adecuado.Para solucionar este problema, te recomendaría dos posibles enfoques:
- Limpiar tus datos: Antes de cargar los datos en BigQuery, puedes limpiar el campo que contiene las nuevas líneas para asegurarte de que no haya ninguna nueva línea dentro de las comillas. Esto puede hacerse utilizando herramientas de procesamiento de texto o scripting para eliminar o reemplazar las nuevas líneas problemáticas.
- Cambiar el formato de tus datos: En lugar de utilizar nuevas líneas dentro de campos entre comillas, puedes considerar cambiar el formato de tus datos. Por ejemplo, podrías utilizar un separador distinto en lugar de las comillas (por ejemplo, `|` en lugar de `"`), o guardar los datos en un formato que sea más compatible con BigQuery.
Espero que estas sugerencias te sean de ayuda para solucionar el problema de carga de tus datos en BigQuery. Si necesitas más ayuda o tienes alguna otra pregunta, por favor házmelo saber.
Respondida el Dec 18, 2020 a las 13:49 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Problema:
Los datos CSV contienen caracteres de nueva línea (
\r
y\n
) en un campo delimitado por comillas dobles ("
), lo que interrumpe la carga de BigQuery incluso con la opciónallow-quoted-newline
habilitada.Solución:
Hay dos posibles soluciones:
1. Utilizar un carácter de escape:
Agrega un carácter de escape (
\
) antes de cada carácter de nueva línea en el campo delimitado por comillas dobles. Por ejemplo, el CSV actualizado se vería así:"49602"|"AFFF7240654213"|"FROM MASTER: TESTing part. Goodluck: example.com/wp.png (tarifado) \\r\\n\\r\\n"|"MO"|||0.000|0.000|50.7000|"NET"
2. Cargar los datos en formato JSON:
Convierte los datos CSV a formato JSON, donde las nuevas líneas se pueden escapar automáticamente. Puedes utilizar una herramienta como
jq
ocsvjson
para realizar la conversión.Ejemplo con jq:
cat data.csv | jq -Rnc --stream 'fromstream(1|truncate_stream(inputs)) | .csv'
Ejemplo con csvjson:
csvjson data.csv | jq -nrc --stream 'fromstream(1|truncate_stream(inputs))'
El resultado JSON se verá similar a esto:
{ "49602": "AFFF7240654213", "FROM MASTER: TESTing part. Goodluck: example.com/wp.png (tarifado) \r\n\r\n": "MO", "0.000": null, "0.000": null, "50.7000": null, "NET": null }
Luego, puedes cargar los datos JSON en BigQuery utilizando el formato JSON.
Respondida el Dec 18, 2020 a las 13:51 - por Gemini
Votos positivos: 0 | Votos negativos: 0