
Me encontré con el dilema de necesitar ejecutar algunos psql
comandos de la consola porque un colega necesitaba usar \i
la directiva de psql en un script guardado para ejecutar declaraciones SQL adicionales desde otro archivo, pero noté que psql se estaba ahogando con estos archivos debido a algunos caracteres basura adicionales que pgAdmin les estaba escribiendo:
psql:C:/tmp/junk.sql:3: ERROR: syntax error at or near "CREATE"
LINE 1: CREATE TABLE junktable (
psql
es necesario aquí porque \i
no es una parte oficial de SQL, por lo que no se ejecutará si envía un comando como ese directamente al intérprete de la base de datos, incluso si tuviera una forma de acceder a los archivos en su disco local.
Para simplificar las cosas, quería encontrar una manera de permitir que el editor sql de PgAdmin funcione bien con Postgres para no decirle de repente a otras personas en el trabajo que descarguen e instalen otro editor solo para solucionar este problema; ellos ya conocen y usan pgAdmin.
Preguntas relacionadas:
- https://stackoverflow.com/questions/9736085/run-a-postgresql-sql-file-using-command-line-args
- https://stackoverflow.com/questions/129445/postgresql-psql-i-how-to-execute-script-in-a-given-path
- ¿Cómo ejecuto/ejecuto un archivo .sql en PostgreSQL 9.2.6 + CentOs?
- https://serverfault.com/a/356722/275718
Respuesta1
Afortunadamente, existe una solución que no requiere modificaciones en psql.exe ni nada por el estilo.
Si hurga en las opciones de PgAdmin III (Archivo -> Opciones), bajo el encabezado "Herramienta de consulta" en "Consultar archivo", encontrará una opción de alternancia de casilla de verificación para "Escribir BOM para archivos UTF".
Una vez que presione Aceptar, debería poder guardar los archivos de PgAdmin que funcionan con la versión empaquetada de psql.exe. Si tiene archivos existentes que tenían presente la tabla BOM UTF que impedía que psql los leyera correctamente, puede cargarlos desde el editor de consultas SQL de PgAdmin y luego simplemente usar la opción Guardar como para guardarlos en su lugar. También debería funcionar hacer un pequeño cambio, como agregar una línea de comentario y guardar normalmente (ctrl-S).