명령줄 인수를 사용하여 PostgreSQL .sql 파일 실행
나는 수천 개의 INSERT 문이 있는 .sql 파일을 가지고 있으며 내 Postgre에서 이러한 삽입을 실행해야 합니다.SQL 데이터베이스를 테이블에 추가합니다.파일이 너무 커서 파일을 열고 INSERT 문을 편집기 창에 복사하여 실행할 수 없습니다.인터넷에서 Postgre의 bin 폴더로 이동하여 다음을 사용할 수 있다는 것을 발견했습니다.SQL 설치:
psql -d myDataBase -a -f myInsertFile
내 경우:
psql -d HIGHWAYS -a -f CLUSTER_1000M.sql
그런 다음 사용자의 암호를 입력하라는 메시지가 표시되지만 아무것도 입력할 수 없으며 Enter 키를 누르면 다음 오류가 표시됩니다.
psql: FATAL: "myUsername" 사용자에 대한 암호 인증 실패
암호를 입력할 수 없는 이유는 무엇입니까?이 스크립트를 실행할 수 있어야 하는데 이 문제를 해결할 수 있는 방법이 있습니까?
저는 다음 구조를 가진 제 pg_hba.conf 파일에 새 항목을 추가하여 이 문제를 해결했습니다.
# IPv6 local connections:
host myDbName myUserName ::1/128 trust
pg_hba.conf 파일은 일반적으로 Postgre의 'data' 폴더에서 찾을 수 있습니다.SQL 설치.
물론 사용자 이름을 포함하지 않기 때문에 인증 시 치명적인 오류가 발생합니다.
이것을 사용해 보세요, 저는 괜찮아요 :)
psql -U username -d myDataBase -a -f myInsertFile
데이터베이스가 원격인 경우 호스트에서 동일한 명령 사용
psql -h host -U username -d myDataBase -a -f myInsertFile
이 작업은 다음과 같이 수행해야 합니다.
\i path_to_sql_file
참조:
암호를 제공하려면 다음과 같은 네 가지 옵션을 선택할 수 있습니다.
- PG PASSWORD 환경 변수를 설정합니다.자세한 내용은 설명서를 참조하십시오.
http://www.postgresql.org/docs/current/static/.htmlhttp ://www.postgresql.org/docs/current/static/libpq-envars.html - 합니다.pgpass 파일을 사용하여 암호를 저장합니다.자세한 내용은 설명서를 참조하십시오.
http://www.postgresql.org/docs/current/static/.htmlhttp ://www.postgresql.org/docs/current/static/libpq-pgpass.html - 해당 특정 사용자에 대해 "신뢰 인증" 사용: http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
- 포스트그레 이후SQL 9.1 연결 문자열도 사용할 수 있습니다.
https://www.postgresql.org/docs/current/static/libpq-connect.html#://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
이를 통해 Postgre에서 *.sql 파일을 실행합니다.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
그런 다음 사용자의 암호를 입력하라는 메시지가 표시됩니다.
EDIT: @zwacky에서 제공한 코멘트를 기반으로 업데이트됨
Linux 셸에서 psql에 로그인한 경우 명령은 다음과 같습니다.
\i fileName.sql
절대적인 경로를 위해 그리고.
\ir filename.sql
psql을 호출한 상대 경로의 경우.
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
터미널을 통해 데이터베이스에 로그온하고 다음을 시도합니다.
database-# >@pathof_mysqlfile.sql
또는
database-#>-i pathof_mysqlfile.sql
또는
database-#>-c pathof_mysqlfile.sql
"-d" 매개 변수를 사용하여 명령줄 자체에 사용자 이름과 PASSWORD를 모두 지정할 수 있습니다.
psql -d "dbname='urDbName' user='yourUserName' password='yourPasswd' host='yourHost'" -f yourFileName.sql
당신은 심지어 이런 방법으로 그것을 할 수도 있습니다.
sudo -u postgres psql -d myDataBase -a -f myInsertFile
가지고 계신다면,sudo
시스템에서 액세스할 수 있으며, 프로덕션 스크립트에는 권장되지 않습니다. 사용자의 시스템에서 테스트하는 것이 가장 쉬운 방법입니다.
2021년 솔루션
당신의 Postgre라면SQL 데이터베이스는 로컬로 시스템에 있습니다.
psql dbname < sqldump.sql username
온라인으로 호스팅되는 경우
psql -h hostname dbname < sqldump.sql username
의문점이나 의문점이 있으시면 댓글로 물어보세요.
Postgre 명령줄에서 SQL을 실행하는 방법에 대해 설명합니다.Linux의 SQL:
터미널을 열고 실행할 수 있는지 확인합니다.psql
명령:
psql --version
which psql
내 버전은 9.1.6입니다./bin/psql
.
다음과 같은 일반 텍스트 파일을 만듭니다.mysqlfile.sql
파일을 편집하고 한 줄씩 입력합니다.
select * from mytable;
명령줄에서 다음 명령을 실행합니다(사용자 이름과 데이터베이스 이름을 pgadmin 및 kurz_prod로 대체).
psql -U pgadmin -d kurz_prod -a -f mysqlfile.sql
다음은 단말기에 표시되는 결과입니다(암호를 입력하라는 메시지가 표시되지 않음).
select * from mytable;
test1
--------
hi
me too
(2 rows)
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
명령 프롬프트를 열고 관리자로 실행할 수 있습니다.다음 입력
../bin>psql -f c:/...-h localhost -p 5432 -d databasename -U "postgres"
Password for user postgres:
나타날 것입니다.
암호를 입력하고 입력합니다.제가 입력하는 비밀번호를 볼 수 없었지만, 이번에는 Enter 키를 누르면 작동했습니다.사실 저는 데이터베이스에 데이터를 로드하고 있었습니다.
@wingman__7의 2021년 답변에서 약간 개선된 점: 사용자 이름에 특정 문자(나의 경우 밑줄)가 포함된 경우, 해당 문자를 사용자 이름과 함께 전달해야 합니다.-U
깃발
이것은 저에게 효과가 있었습니다.
$ psql -h db.host -d db_name -U my_user < query.sql
작성한 문서를 보관했습니다(내 스크립트가 있는 디렉토리에 위치).
::someguy@host::$sudo -u user psql -d my_database -a -f file.sql
어디에-u user
스크립트를 실행할 데이터베이스를 소유하는 역할입니다.psql
에 연결합니다.psql
그 후에 위로-d my_database
나를 싣습니다.mydatabase
마침내.-a -f file.sql
어디에-a
스크립트의 모든 입력을 반향합니다.-f
에서 명령 실행file.sql
안으로mydatabase
종료합니다.
사용 중: psql(Postgre)SQL) 10.12 on (Ubuntu 10.12-0ubuntu0).18.04.1)
명령줄 콘솔에서 다음 명령을 사용해 보십시오.
psql -h localhost -U postgres -f restore.sql
언급URL : https://stackoverflow.com/questions/9736085/run-a-postgresql-sql-file-using-command-line-arguments
'programing' 카테고리의 다른 글
WPF의 스택 패널에서 왼쪽 및 오른쪽 컨트롤 정렬 (0) | 2023.05.05 |
---|---|
PostgreSQL: Postgre에 테이블 표시SQL (0) | 2023.05.05 |
git 복제 중 원격 종료가 예기치 않게 끊어졌습니다. (0) | 2023.05.05 |
상수에 대한 C# 명명 규칙? (0) | 2023.05.05 |
asp.net 외부에서 레이저 뷰 엔진을 사용할 수 있습니까? (0) | 2023.05.05 |