2012-09-14 61 views
7

En el ejemplo que se muestra a continuación, la última línea no se carga. Me aparece un error:Datos entre comillas y el separador de campo

Data between close double quote (") and field separator: 

Esto parece un error, ya que todos los datos entre el símbolo de la tubería deben tratarse como un solo campo.

esquema: uno: cuerda, dos: cuerda, tres: cuerda, cuatro: cadena

Subir archivo:

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | "start quote" and | a word after quotes 

La primera y segunda línea se procesa anteriormente. Pero no el tercero.


Actualización:

Pueden algunos explique por qué hace lo siguiente trabajo excepto la tercera línea?

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | "start quote" and | a word after quotes 
forth line | enclosed | {"GPRS","MCC_DETECTED":false,"MNC_DETECTED":false} | how does this work? 
fifth line | with | {"start quote"} and | a word after quotes 

Puede haber alguna explicación elegante para esto. Desde la perspectiva del usuario final, esto es absurdo.

+1

he intentado su actualización, y el ejemplo que dio en realidad no funciona Al igual que la mayoría de las aplicaciones de análisis de CSV, BigQuery considera por defecto las comillas dobles (") como un carácter que delimita el campo. La tercera línea no se escapó correctamente (ver mi respuesta a continuación) y la ingestión arrojará un error. Sus opciones son: 1. Cambie el parámetro "configuration.load.quote" en sus solicitudes de ingestión a otra cosa que no sea una comilla doble (un carácter que no aparece en sus datos). 2. Escape de sus datos como se recomienda a continuación ... por ejemplo, la clase csv de Python hace esto automáticamente. –

+0

Si bien puede ser útil considerar la posibilidad de hacer cosas como establecer "configuration.load.quote" en NULL, creo que es importante ser muy explícito con los delimitadores y los caracteres que encierran el campo cuando se trabaja con grandes cantidades de datos CSV.Ayuda a detectar errores en los datos subyacentes y a garantizar que los datos que está ingiriendo son válidos. –

Respuesta

7

Del CSV RFC4180 page: "Si se utilizan comillas dobles para encerrar campos, se debe escapar una comilla doble que aparece dentro de un campo precediéndola con otra comilla doble".

es probable que desee hacer esto:

This | is | test only | to check quotes 
second | line | "with quotes" | no text 
third line | with | " ""start quote"" and " | a word after quotes 

Más información sobre nuestro formato de entrada CSV here.

+4

Tenga en cuenta que puede cambiar el carácter de comillas estableciendo el campo 'quote' en la configuración del trabajo de carga en algo que nunca usará. –

+1

¿Cómo se establece el campo de cotización en el trabajo de carga? si uso bq load --quote '^' ... entonces obtengo un error FATAL Flags analizando error: línea de comando desconocida marca 'quote' # si agrego el parámetro quote en ~/.bigqueryrc entonces obtengo el error: configuración desconocida de la bandera .load.quote encontrado en el archivo bigqueryrc – shantanuo

+0

Supongo que el parámetro "quote" se agregará a la herramienta de línea de comandos bq en la próxima versión. ¡Este problema es tan importante para mí que esperaré la nueva versión! – shantanuo

1

También puede usar las otras banderas al cargar los datos. He utilizado la herramienta de bq con banderas siguientes

bq load -F , --source_format CSV --skip_leading_rows 1 --max_bad_records 1 --format csv -E UTF-8 yourdatset gs://datalocation. 
0

-- Cita funcionó a la perfección.

bq load 
--source_format CSV --quote "" 
--field_delimiter \t 
--max_bad_records 10 
-E UTF-8 
destination table 
Source files 
Cuestiones relacionadas