Cómo marcar con fecha y hora los datos copiados en una base de datos p

Cómo marcar con fecha y hora los datos copiados en una base de datos postgresql

Tengo un script de shell que extrae datos de un servidor a una tabla postgresql.

df -g | awk 'BEGIN{OFS=","}NR>1{$1=$1; print}' > /data/metric.csv


psql -h localhost -d metrics -U postgres -c "copy tablename from STDIN with delimiter as ',';" < /data/metric.csv

Se muestra como:

      filesystem      | gb_blocks |  free  | %used | iused | %iused |   mounted_on
      /dev/hd2             | 16.75     | 12.60  | 25%   | 79098 | 3%     | /usr
      /dev/hd9var          | 8.00      | 6.00   | 25%   | 11965 | 1%     | /var
      /dev/hd3             | 36.75     | 18.83  | 49%   | 5614  | 1%     | /tmp
      /dev/hd1             | 3.25      | 3.11   | 5%    | 674   | 1%     | /home
      /dev/hd11admin       | 0.25      | 0.25   | 1%    | 16    | 1%     | /admin
      /proc                | -         | -      | -     | -     | -      | /proc

Estoy trabajando con Postgresql en un sistema operativo Ubuntu y extraigo la información de un servidor AIX. Me gustaría agregar una columna con una marca de tiempo para cada vez que se agregan nuevos datos a la tabla porque ahora todo se combina. Intenté agregar otra columna para la marca de tiempo y darle un valor de marca de tiempo, pero la marca de tiempo no está en el archivo csv y tampoco estoy seguro de cómo agregarla. Agradezco la ayuda que pueda obtener para solucionar esto.

Mostrar la mejor respuesta

Cree una tabla y agregue una columna de fecha con un valor de Default como current_Date/now() ).

CREATE TABLE IF NOT EXISTS metrics
(
    filesystem text ,
    gb_blocks text ,
    free text ,
    per_used text ,
    iused text ,
    per_iused text ,
    mounted_on text ,
    load_dttm timestamp without time zone DEFAULT now()
);

mencione columnscon la tabla mientras carga los datos como se indica a continuación

psql -h localhost -d metrics -U postgres -c "copy metrics(filesystem,gb_blocks,free,per_used,iused,per_iused,mounted_on) from STDIN with delimiter as ',';" < /data/metric.csv

@ Rj_N Cuando pruebo el comando de copia anterior, recibo el siguiente error: ERROR: error de sintaxis en o cerca de "%" LÍNEA 1: copiar smarlowvm (sistema de archivos, gb_blocks, gratis, % usado, iused, % ius ...

@SMARZ, intente copiar el comando en psql: postgres=# \copy metrics(filesystem,gb_blocks,free,"%used",iused,"%iused",mou‌​nted_on) FROM 'metric.csv' DELIMITER ',' CSV

Eso funcionó muy bien desde dentro de psql. ¿Cómo podría modificar esto para poder copiar los datos desde fuera de psql?

De alguna manera, la columna %used no está tomando psql externo, puede considerar cambiar el nombre de las columnas sin %. puede usar like per_used de la misma manera que debería funcionar.

Esto funcionó. Gracias de nuevo.