PostgreSQL 8.4에서 기존 * .sql 파일을 가져 오는 방법은 무엇입니까?


105

PostgreSQL 8.4를 사용하고 있으며 데이터베이스로 가져올 * .sql 파일이 있습니다. 어떻게 할 수 있습니까?

답변:


142

명령 줄에서 :

psql -f 1.sql
psql -f 2.sql

로부터 psql메시지 :

\i 1.sql
\i 2.sql

특정 순서로 파일을 가져와야 할 수도 있습니다 (예 : 데이터 조작 전 데이터 정의). 당신이 가지고있는 경우에 bash쉘 (GNU / 리눅스, 맥 OS X, Cygwin에서) 와 파일이 알파벳 순서로 가져올 수 있습니다 , 당신은이 명령을 사용할 수 있습니다 :

for f in *.sql ; do psql -f $f ; done

다음은 psql애플리케이션 문서입니다 (Frank 감사합니다). http://www.postgresql.org/docs/current/static/app-psql.html


@moon SQL 파일에 대한 액세스 권한이없는 것 같습니다. 어떤 운영 체제를 사용하고 있습니까?
Bolo

@moon PostgreSQL 사용자와 연결된 암호입니다 (사용자-패스 쌍은 PostgreSQL에 저장 됨).
Bolo 2010-08-03

8
@moon 문제를 세 단계로 나누는 것이 좋습니다. 1) psql실행할 수 있는지 확인하십시오 . : 2) 확인하십시오 사용자는 다음과 같은 필요한 쓰기 권한이 있습니다 CREATE, INSERT, UPDATE, 등 3) 가져 SQL 파일을. 내가 아는 한, 당신은 지금 1 단계에 있습니다.
Bolo

@Bolo : 세 단계를 답에 넣으시겠습니까?
AH

@Bolo, 당신이 언급했듯이 나는 이제 세 번째 단계에 있습니다. 하지만 내 로컬 컴퓨터에서 .sql 파일을 가져 오는 방법. \ i [확장자가있는 전체 경로]를 시도했지만 오류 메시지 .sql no such file or directory가 표시됩니다. 예를 들어 주시겠습니까?

75

명령 줄에서 먼저 psql이있는 디렉토리에 도달 한 다음 다음과 같은 명령을 작성합니다.

psql [database name] [username]

그런 다음 Enter 키를 누릅니다. psql은 암호를 묻고 사용자 암호를 제공합니다.

다음 쓰기

> \i [full path and file name with extension]

그런 다음 Enter를 눌러 삽입 완료.


나도 이것을 사용합니다. 그리고 작동합니다. 그러나 제공된 SQL 문을 변경합니다. 이전에 기존 * .sql은 문자를 사용하지 않았습니다. 라인의 종료로. 그리고 GO도 제거해야합니다. SQL 스크립트가 psql 스크립트가 아니라고 생각하십니까?
swdev

\ i [확장자가있는 전체 경로]를 사용하려고했지만 오류 메시지 .sql no such file or directory가 표시됩니다. 예제를 업로드 해 주시겠습니까? 감사.

\ i가 그러한 파일이 없다고 말하면 해당 위치에서 파일을 찾지 못한 것입니다. 절대 URL을 제공하는 것이 가장 좋습니다. Windows에서 저에게는이 명령 줄이 작동했습니다. \ i /tmp/robert/test.sql 물론 해당 파일에 유효한 SQL 명령이 있어야합니다.
shevy

36

내가 아는 가장 짧은 방법은 다음과 같습니다.

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

database_name : 파일 데이터를 삽입해야하는 데이터베이스입니다.

file_path : 가져 오기를 수행 할 파일의 절대 경로입니다.

host_name : 호스트의 이름. 개발 목적으로 대부분 localhost.

콘솔에이 명령을 입력하면 암호를 입력하라는 메시지가 표시됩니다.


25

"/"및 "\"에주의하십시오. Windows에서도 명령은 다음 형식이어야합니다.

\i c:/1.sql

1

항상 연결 서비스 파일 (lookup / google 'psql 연결 서비스 파일')을 사용하는 것이 좋습니다.

그런 다음 간단히 :

psql service={yourservicename} < {myfile.sql}

yourservicename서비스 파일의 섹션 이름은 어디에 있습니까 ?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.