Informix: Cómo obtener el contenido de tablas y columnas utilizando dbaccess?
Pregunta
Supongamos que tengo:
- una base de datos Informix llamado "MY_DATABASE"
- una tabla llamada "mi_tabla" con las columnas "col_1", "col_2" y "col_3":
Me puede extraer el contenido de la tabla mediante la creación de una my_table.sql script como:
unload to "my_table.txt"
select * from my_table;
e invocando dbaccess desde la línea de comandos:
dbaccess my_database my_table.sql
Esto producirá el archivo my_table.txt con contenidos como:
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
Ahora, ¿qué tengo que hacer si quiero obtener los nombres de las columnas en el my_table.txt ? Como:
col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
Solución
Ninguna de las herramientas estándar de Informix poner los nombres de las columnas en la parte superior de la salida como desee.
El SQLCMD programa (no el recién llegado Microsoft - la original, disponible en el IIUG archivo de software ) tiene la capacidad de hacer eso; utilizar la opción -H
para los títulos de las columnas (y -T
para obtener los tipos de columna).
sqlcmd -U -d my_database -t my_table -HT -o my_table.txt
sqlunload -d my_database -t my_table -HT -o my_table.txt
También puede hacer SQLCMD salida CSV si eso es lo que necesita (pero - error - que no formatea correctamente los nombres de columna o columnas tipos de líneas).
Otros consejos
¿Por qué no se utiliza dbschema?
Para obtener el esquema de una tabla (sin parámetro -t mostrar todos base de datos)
dbschema -d [DBName] -t [DBTable] > file.sql
Para obtener el esquema de un procedimiento almacenado
dbschema -d [DBName] -f [SPName] > file.sql
encontrado una solución más fácil. Coloque los encabezados en una header.txt
digamos archivo (que contendrá una sola línea "col_1|col_2|col_3
") a continuación, combinar el archivo de cabecera y de correr archivo de salida:
cat header.txt my_table.txt > my_table_wth_head.txt