amazon redshift - quicksight - Redshift COPY no se encontró el delimitador de comando
amazon s3 (4)
Es posible que esto no esté directamente relacionado con la pregunta del OP, pero recibí el mismo error Delimiter not found
que fue causado por los caracteres de nueva línea dentro de uno de los campos.
Para cualquier campo que crea que puede tener caracteres de nueva línea, puede eliminarlos con:
replace(my_field, chr(10), '''')
Estoy tratando de cargar algunos archivos de texto a Redshift. Están delimitados por tabulaciones, excepto después del valor de la fila final. Eso está causando un error delimitador no encontrado. Solo veo una forma de establecer el delimitador de campo en la instrucción COPY, no una forma de configurar un delimitador de fila. ¿Alguna idea que no implique procesar todos mis archivos para agregar una pestaña al final de cada fila?
Gracias
Puede obtener el error de delimitador no encontrado si su fila tiene menos columnas de las esperadas. Algunos generadores CSV solo pueden generar una comilla al final si las últimas columnas son nulas.
Para resolver esto, puede utilizar FILLRECORD en las opciones de copia de desplazamiento al rojo.
Sé que esto fue respondido, pero acabo de lidiar con el mismo error y tuve una solución simple, así que la compartiré.
Este error también se puede resolver indicando las columnas específicas de la tabla que se copian de los archivos s3 (si sabe cuáles son las columnas en los datos en s3). En mi caso, los datos tenían menos columnas que el número de columnas en la tabla. La respuesta de Madahava con la opción ''FILLRECORD'' DID solucionó el problema por mí, pero luego noté que una columna que se suponía se llenaba con los valores predeterminados, permaneció nula.
COPY <table> (col1, col2, col3) from ''s3://somebucket/file'' ...
No creo que el problema sea por faltar <tab>
al final de las líneas. ¿Estás seguro de que TODAS las líneas tienen el número correcto de campos?
Ejecutar la consulta:
select le.starttime, d.query, d.line_number, d.colname, d.value,
le.raw_line, le.err_reason
from stl_loaderror_detail d, stl_load_errors le
where d.query = le.query
order by le.starttime desc
limit 100
para obtener el informe de error completo. Mostrará el nombre del archivo con errores, número de línea incorrecto y detalles de error.
Esto ayudará a encontrar dónde está el problema.