Saya memiliki beberapa file .sql dengan ribuan pernyataan INSERT di dalamnya dan perlu menjalankan sisipan ini pada database PostgreSQL saya untuk menambahkannya ke tabel. File-file itu besar sehingga tidak mungkin untuk membukanya dan menyalin pernyataan INSERT ke jendela editor dan menjalankannya di sana. Saya menemukan di Internet bahwa Anda dapat menggunakan yang berikut dengan menavigasi ke folder bin dari instalasi PostgreSQL Anda:
psql -d myDataBase -a -f myInsertFile
Dalam hal ini:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
Saya kemudian dimintai kata sandi untuk pengguna saya, tetapi saya tidak bisa memasukkan apa pun dan ketika saya menekan enter saya mendapatkan kesalahan ini:
psql: FATAL: otentikasi kata sandi gagal untuk "myUsername" pengguna
Mengapa tidak membiarkan saya memasukkan kata sandi. Apakah ada jalan keluarnya karena sangat penting untuk menjalankan skrip ini?
Saya mengatasi masalah ini dengan menambahkan entri baru di file pg_hba.conf saya dengan struktur berikut:
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
File pg_hba.conf biasanya dapat ditemukan di folder 'data' dari instalasi PostgreSQL Anda.
sumber
Jawaban:
Anda memiliki empat pilihan untuk memberikan kata sandi:
http://www.postgresql.org/docs/current/static/libpq-envars.html
http://www.postgresql.org/docs/current/static/libpq-pgpass.html
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
sumber
-u
parameter seperti yang didokumentasikan dalam manualTentu saja, Anda akan mendapatkan kesalahan fatal untuk otentikasi, karena Anda tidak memasukkan nama pengguna ...
Coba yang ini, tidak masalah buat saya :)
Jika database jauh, gunakan perintah yang sama dengan host
sumber
-a
param?-a
tidak diperlukan di sini. Ini "Cetak semua jalur input non-kosong ke output standar saat dibaca"Anda harus melakukannya seperti ini:
Lihat:
sumber
Permission denied
chmod 777 myfile
kesalahanPermission denied
diperbaikiGunakan ini untuk mengeksekusi file * .sql ketika server PostgreSQL terletak di tempat yang berbeda:
Kemudian Anda diminta untuk memasukkan kata sandi pengguna.
EDIT: diperbarui berdasarkan komentar yang diberikan oleh @zwacky
sumber
-a
: semua gema ,:-q
tenang-f
sumber
Jika Anda masuk ke psql di shell Linux perintahnya adalah:
untuk jalur absolut dan
untuk jalur relatif dari tempat Anda memanggil psql.
sumber
Melalui terminal, logon ke database Anda dan coba ini:
atau
atau
sumber
Anda dapat memberikan nama pengguna dan PASSSWORD pada baris perintah itu sendiri.
sumber
Anda bahkan dapat melakukannya dengan cara ini:
Jika Anda memiliki
sudo
akses pada mesin dan tidak disarankan untuk skrip produksi hanya untuk pengujian pada mesin Anda sendiri, itu adalah cara termudah.sumber
Telusuri cara menjalankan SQL pada baris perintah untuk PostgreSQL di Linux:
Buka terminal dan pastikan Anda dapat menjalankan
psql
perintah:Milik saya adalah versi 9.1.6 terletak di
/bin/psql
.Buat file teks biasa bernama
mysqlfile.sql
Edit file itu, letakkan satu baris di sana:
Jalankan perintah ini pada commandline (mengganti nama pengguna Anda dan nama database Anda untuk pgadmin dan kurz_prod):
Berikut ini adalah hasil yang saya dapatkan di terminal (saya tidak diminta kata sandi):
sumber
Anda dapat membuka prompt perintah dan menjalankannya sebagai administrator. Kemudian ketik
Password for user postgres:
akan muncul.Ketikkan kata sandi Anda dan masukkan. Saya tidak bisa melihat kata sandi apa yang saya ketikkan, tetapi kali ini ketika saya menekan enter, kata itu berhasil. Sebenarnya saya sedang memuat data ke dalam database.
sumber
-d "postgres"
-d
untuk nama basis data, periksapsql --help
Saya mencapai itu menulis (terletak di direktori di mana skrip saya)
di mana
-u user
peran yang memiliki database di mana saya ingin mengeksekusi skrip kemudianpsql
menghubungkan kepsql
konsol setelah itu-d my_database
memuat sayamydatabase
akhirnya di-a -f file.sql
mana-a
gema semua input dari skrip dan-f
jalankan perintah darifile.sql
kemydatabase
, kemudian keluar.Saya menggunakan: psql (PostgreSQL) 10.12 di (Ubuntu 10.12-0ubuntu0.18.04.1)
sumber