Muchísimas gracias por la ayuda! Estaré probando todo lo indicado y luego doy retorno. Saludos cordiales, Yessica
El mar., 6 nov. 2018 a las 5:08, Francisco Olarte (<fola...@peoplecall.com>) escribió: > Yessica: > > > 2018-11-06 4:05 GMT+01:00 Yessica Brinkmann <yessica.brinkm...@gmail.com>: > ... > > Tengo el psql dentro del directorio postgresql-8.3.23/src/bin/psql > .... > > Y lo ejecuto ingresando a dicho directorio y escribiendo: > > ./psql template1 por ejemplo. > > > > El caso es que ahora necesito correr un conjunto de scripts sql que > están en > > un directorio aparte, con el psql > > Es decir, necesito escribir por ejemplo: > > psql $CONNSTR -U $SYSDBA -d postgres < pgsqlds2_create_db.sql > > El archivo pgsqlds2_create_db.sql se encuentra en el directorio > > home/yessica/ds2 > > El caso es que cuando trato de ejecutar el script me responde el bash > con un > > error, diciendo que el psql no existe. > > Por eso creo que necesito agregar seguramente el psql como una variable > de > > entorno, para poder llamarla desde el bash, para poder ejecutar un script > > sql que se encuentra en un directorio específico. > > Problema de Unix, no de postgres. Como ya sabras los shell de unix > buscan cualquier comando que ejecutes SIN separadores de directorio en > $PATH. > > Segun tu ejemplo el script lo ejecuta asi ( hay algunos hechos de > forma que usan $PSQL y lo inicializan a psql, que tienen otras > soluciones ). > > Lo unico que tienes que hacer es poner el directorio ( COMPLETO, en tu > ejemplo das un nombre relativo, probablemente lo que quieres es > $HOME/postgresql-8.3.23/src/bin ) en el PATH, normalmente al prinpio > por si tienes algun otro psql en el sistema ( yo suelo optar en estos > casos por 'export PATH=$HOME/postgresql-8.3.23/src/bin:$PATH' ). > > Unas indicaciones extra. Primero, la presencia de /src/ en tu nombre > de archivo indica que probablemente no has instalado el postgres y > estas trabajando sobre el compilado directo. Eso suele dar algun > problemilla. Segundo, si no quieres contaminar el entorno de ru shell > de usuario metieno lo del PATH en el .bashrc (ya que probablemente sea > bash lo que usas ), puedes o bien hacer una asignacion local ( > 'PATH=$HOME/postgresql-8.3.23/src/bin:$PATH <el script>' ), que te > pone el PATH durante la ejecucion de ese comando o, si son varios, > hacer un subshell ( haces bash-enter, modificas el path ahi, ejecutas > lo que quieras, haces exit para volver al principal y vuelves a tu > entorno 'limpio' ). > > Por ultimo, puedes usar nombres completos, cosas como > '$HOME/postgresql-8.3.23/src/bin/psql $CONNSTR -U $SYSDBA -d postgres > < $HOME/ds2/pgsqlds2_create_db.sql', que te deberian funcionar desde > cualquier punto del filesystem. > > Francisco Olarte. >