[postgresql] 명령 줄 인수를 사용하여 PostgreSQL .sql 파일 실행
수천 개의 INSERT 문이 포함 된 일부 .sql 파일이 있으며 PostgreSQL 데이터베이스에서 이러한 삽입을 실행하여 테이블에 추가해야합니다. 파일이 너무 커서 파일을 열고 INSERT 문을 편집기 창에 복사하여 실행할 수 없습니다. 인터넷에서 PostgreSQL 설치의 bin 폴더로 이동하여 다음을 사용할 수 있음을 발견했습니다.
psql -d myDataBase -a -f myInsertFile
나의 경우에는:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
그런 다음 사용자의 비밀번호를 묻는 메시지가 표시되지만 아무것도 입력 할 수 없으며 Enter 키를 누르면이 오류가 발생합니다.
psql : 치명적 : 사용자 “myUsername”의 비밀번호 인증에 실패했습니다.
비밀번호를 입력 할 수없는 이유는 무엇입니까? 이 스크립트를 실행할 수 있어야하므로이 문제를 해결할 방법이 있습니까?
pg_hba.conf 파일에 다음과 같은 구조로 새 항목을 추가하여이 문제를 해결했습니다.
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
pg_hba.conf 파일은 일반적으로 PostgreSQL 설치의 ‘data’폴더에 있습니다.
답변
비밀번호를 제공 할 수있는 네 가지 선택 사항이 있습니다.
- PGPASSWORD 환경 변수를 설정하십시오. 자세한 내용은 매뉴얼을 참조하십시오 :
http://www.postgresql.org/docs/current/static/libpq-envars.html - .pgpass 파일을 사용하여 비밀번호를 저장하십시오. 자세한 내용은 매뉴얼을 참조하십시오 :
http://www.postgresql.org/docs/current/static/libpq-pgpass.html - 해당 특정 사용자에 대해 “신뢰 인증”을 사용하십시오. http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
- PostgreSQL 9.1부터 연결 문자열을 사용할 수도 있습니다 :
https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
답변
물론 사용자 이름을 포함하지 않기 때문에 인증에 치명적인 오류가 발생합니다.
이것을 시도하십시오, 그것은 나를 위해 좋습니다 🙂
psql -U username -d myDataBase -a -f myInsertFile
데이터베이스가 원격 인 경우 호스트와 동일한 명령을 사용하십시오.
psql -h host -U username -d myDataBase -a -f myInsertFile
답변
다음과 같이해야합니다.
\i path_to_sql_file
보다:
답변
PostgreSQL 서버가 다른 곳에있을 때 * .sql 파일을 실행하려면 이것을 사용하십시오 :
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
-a all echo
-q quiet
그런 다음 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다.
편집 : @zwacky의 의견에 따라 업데이트
답변
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
답변
Linux 쉘에서 psql에 로그인 한 경우 명령은 다음과 같습니다.
\i fileName.sql
절대 경로와
\ir filename.sql
psql을 호출 한 상대 경로입니다.
답변
터미널을 통해 데이터베이스에 로그온하고 다음을 시도하십시오.
database-# >@pathof_mysqlfile.sql
또는
database-#>-i pathof_mysqlfile.sql
또는
database-#>-c pathof_mysqlfile.sql