I have some .sql files with thousands of INSERT statements in them and need to run these inserts on my PostgreSQL database in order to add them to a table. The files are that large that it is impossible to open them and copy the INSERT statements into an editor window and run them there. I found on the Internet that you can use the following by navigating to the bin folder of your PostgreSQL install:
psql -d myDataBase -a -f myInsertFile
In my case:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
I am then asked for a password for my user, but I cannot enter anything and when I hit enter I get this error:
psql: FATAL: password authentication failed for user "myUsername"
Why won't it let me enter a password. Is there a way round this as it is critical that I can run these scripts?
I got around this issue by adding a new entry in my pg_hba.conf file with the following structure:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
The pg_hba.conf file can usually be found in the 'data' folder of your PostgreSQL install.
Use this to execute *.sql files when the PostgreSQL server is located in a difference place:
Then you are prompted to enter the password of the user.
EDIT: updated based on the comment provided by @zwacky
Via the terminal log on to your database and try this:
or
or
you could even do it in this way:
If you have
sudo
access on machine and it's not recommended for production scripts just for test on your own machine it's the easiest way.Walk through on how to run an SQL on the command line for PostgreSQL in Linux:
Open a terminal and make sure you can run the
psql
command:Mine is version 9.1.6 located in
/bin/psql
.Create a plain textfile called
mysqlfile.sql
Edit that file, put a single line in there:
Run this command on commandline (substituting your username and the name of your database for pgadmin and kurz_prod):
The following is the result I get on the terminal (I am not prompted for a password):
Of course, you will get a fatal error for authenticating, because you do not include a user name...
Try this one, it is OK for me :)
If the database is remote, use the same command with host