Tengo un conjunto de aplicaciones de Linux que se están componiendo juntas a través de tuberías.
some_application | awk '{print "INSERT INTO my_table VALUES (\x27" $2 "\x27," $3 ")"' El resultado será una serie de comandos SQL INSERT :
INSERT INTO my_table VALUES ('foo',42) INSERT INTO my_table VALUES ('bar',43) ¿Cómo se pueden canalizar estos múltiples comandos en psql ?
Hay una pregunta similar que responde cómo ejecutar un solo comando usando el parámetro -c para psql. Pero esa respuesta no es ideal para mi escenario porque requiere establecer una nueva conexión para cada comando; Preferiría configurar una sola conexión y luego canalizar todos los comandos a través de esa sesión.
Gracias de antemano por su consideración y respuesta.
Puede canalizarlo directamente a psql , pero necesita terminadores de punto y coma para cada línea.
some_application | awk '{print "INSERT INTO my_table (\'" $2 "\'," $3 ");"' | psql <your connection switches>Puede probar sus parámetros de conexión haciendo algo inocuo como este:
echo "select count(*) from pg_tables;" | psql <your parms>Verá el resultado de la consulta si la información de conexión es correcta.