Tengo un problema con algunos archivos CSV provenientes de un software y que quiero usar para hacer la importación de PostgreSQL (función COPIAR DESDE CSV). El problema es que faltan algunas últimas columnas como esta (letra para encabezados, número para valores, _ para el delimitador TAB):
a_b_c_d 1_2_3_4 5_6_7 <- last column missing 8_9_0_1 2_6_7 <- last column missingCOPY in_my_table FROM file.csv el resultado es: ERROR: faltan datos para la columna "d"
Muestra de un archivo correcto para importar:
a_b_c_d 1_2_3_4 5_6_7_ <- null column but not missing 8_9_0_1 2_6_7_ <- null column but not missingMi pregunta: ¿hay algunos comandos en bash / linux Shell para agregar el delimitador TAB para hacer un archivo csv correcto / completo / acolchado con todas las columnas?
Gracias por la ayuda.
Ok, de hecho encontré esto:
awk -F'\t' -v OFS='\t' 'NF=50' input.csv > output.csvdonde 50 es el número de TAB + 1.
No sabía mucho sobre Linux, pero esto podría hacerse fácilmente en postgresql mediante un comando simple como
copy tableName from '/filepath/name.csv' delimiter '_' csv WITH NULL AS 'null';Puede usar una combinación de sed y expresiones regulares:
sed -r 's/^[0-9](_[0-9]){2}$/\0_/g' file.csv Solo necesita reemplazar _ por su delimitador ( \t ).