linea - Ejecute un archivo.sql de PostgreSQL usando argumentos de la línea de comandos
importar archivo.sql a postgresql en windows (11)
Tengo algunos archivos .sql con miles de sentencias INSERT y necesito ejecutar estas inserciones en mi base de datos PostgreSQL para agregarlas a una tabla. Los archivos son tan grandes que es imposible abrirlos y copiar las declaraciones INSERT en una ventana del editor y ejecutarlas allí. Encontré en Internet que puede usar lo siguiente navegando a la carpeta bin de su instalación de PostgreSQL:
psql -d myDataBase -a -f myInsertFile
En mi caso:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
Entonces me piden una contraseña para mi usuario, pero no puedo ingresar nada y cuando presiono enter recibo este error:
psql: FATAL: error de autenticación de contraseña para el usuario "miUsuario"
¿Por qué no me deja ingresar una contraseña? ¿Hay alguna forma de evitar esto, ya que es fundamental que pueda ejecutar estos scripts?
Resolví este problema agregando una nueva entrada en mi archivo pg_hba.conf con la siguiente estructura:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
El archivo pg_hba.conf generalmente se puede encontrar en la carpeta ''datos'' de su instalación de PostgreSQL.
A través del terminal, inicie sesión en su base de datos y pruebe esto:
database-# >@pathof_mysqlfile.sql
o
database-#>-i pathof_mysqlfile.sql
o
database-#>-c pathof_mysqlfile.sql
Deberías hacerlo así:
/i path_to_sql_file
Ver:
Incluso podrías hacerlo de esta manera:
sudo -u postgres psql -d myDataBase -a -f myInsertFile
Si tiene acceso a sudo
en la máquina y no se recomienda para los scripts de producción, solo para probar en su propia máquina es la forma más fácil.
Por supuesto, recibirá un error fatal al autenticarse, porque no incluye un nombre de usuario ...
Prueba este, está bien para mí :)
psql -U username -d myDataBase -a -f myInsertFile
Si la base de datos es remota, use el mismo comando con el host
psql -h host -U username -d myDataBase -a -f myInsertFile
Puede abrir un símbolo del sistema y ejecutar como administrador. Entonces escribe
../bin>psql -f c:/...-h localhost -p 5432 -d databasename -U "postgres"
Password for user postgres:
se mostrará.
Escriba su contraseña y escriba. No pude ver la contraseña que estaba escribiendo, pero esta vez cuando presioné Intro, funcionó. En realidad estaba cargando datos en la base de datos.
Puede dar tanto el nombre de usuario como la CONTRASEÑA en la propia línea de comandos.
psql "dbname=''urDbName'' user=''yourUserName'' password=''yourPasswd'' host=''yourHost''" -f yourFileName.sql
Si ha iniciado sesión en psql en el shell de Linux, el comando es:
/i fileName.sql
por un camino absoluto y
/ir filename.sql
para la ruta relativa desde donde ha llamado psql.
Tienes cuatro opciones para proporcionar una contraseña:
- Establecer la variable de entorno PGPASSWORD. Para más detalles consulte el manual:
http://www.postgresql.org/docs/current/static/libpq-envars.html - Use un archivo .pgpass para almacenar la contraseña. Para más detalles consulte el manual:
http://www.postgresql.org/docs/current/static/libpq-pgpass.html - Use la "autenticación de confianza" para ese usuario específico: http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
- Desde PostgreSQL 9.1 también puedes usar una cadena de conexión :
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
Use esto para ejecutar archivos * .sql cuando el servidor PostgreSQL se encuentra en un lugar diferente:
psql -h localhost -d userstoreis -U admin -p 5432 -a -q -f /home/jobs/Desktop/resources/postgresql.sql
-h PostgreSQL server IP address
-d database name
-U user name
-p port which PostgreSQL server is listening on
-f path to SQL script
Luego se le pedirá que ingrese la contraseña del usuario.
Consulte cómo ejecutar un SQL en la línea de comandos de PostgreSQL en Linux:
Abra un terminal y asegúrese de que puede ejecutar el comando psql
:
psql --version
which psql
La mía es la versión 9.1.6 ubicada en /bin/psql
.
Cree un archivo de texto simple llamado mysqlfile.sql
Edite ese archivo, ponga una sola línea allí:
select * from mytable;
Ejecute este comando en la línea de comandos (sustituyendo su nombre de usuario y el nombre de su base de datos por pgadmin y kurz_prod):
psql -U pgadmin -d kurz_prod -a -f mysqlfile.sql
El siguiente es el resultado que obtengo en el terminal (no se me solicita una contraseña):
select * from mytable;
test1
--------
hi
me too
(2 rows)
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql