2014-04-22 4 views
0

PostgreSQL 가져 오기 도구를 사용하여 CSV의 데이터로 개발 데이터베이스를 채 웁니다.Postgresql 가져 오기 도구에 사용되는 SQL 기록하기

가져 오기 도구가 가져 오기를 실행하는 데 사용한 SQL을 '기록'하는 방법이 있습니까? 예를 들어 Filename, 인코딩, 머리글 여부, 구분 기호, 채울 필드 등을 선택합니다.

약간의 '시행 착오'가 있기 때문에 일단 성공적으로 완료하면 이 다음에 SQL을 복사하고 나중에 Evernote에 저장하여 다음 번에 데이터베이스를 다시 채울 필요가있을 때 실행할 수 있습니다 (다시 가져 오기 등을 잘라내십시오). 또한 루비 레이크 작업을 위해 SQL을 사용하여 터미널에서 실행할 수 있습니다.

아이디어가 있으십니까?

+1

어떤 Postgres 가져 오기 도구입니까? 제 3 자 앱을 사용하는 것 같습니다. –

+0

아, 죄송합니다. PgAdmin3을 사용합니다. –

답변

2

PgAdmin-III의 "가져 오기 도구"는 COPY 명령을 실행합니다. postgresql.conf에서 log_statement = 'all'을 사용하고 서버 로그를 검사하면 표시됩니다.

대신 스크립트에서 psql\copy 명령을 사용하여 동일한 결과를 얻을 수 있습니다.

COPY은 Ruby Pg gem과 같은 항목이 일반적으로 직접 지원하지 않는 특별한 행 단위 입력 모드로 전환하는 특수 명령이므로 다른 클라이언트를 통해 실행되는 SQL에서는 작동하지 않습니다. The Pg gem does support COPY via the copy_data method이므로 Ruby 코드에서 사용할 수 있지만 루비 등에서 CSV를 직접 열어야합니다. 매우 간단합니다. 레이크 작업을 사용하려면 어떻게해야할까요?

다른 옵션은 PostgreSQL에 직접로드 할 파일 경로를 전달하는 서버 측 COPY을 사용하는 것입니다. 이것은 가장 빠르지 만 PostgreSQL 서버가 파일을 읽을 수있는 권한과 파일이 서버와 동일한 컴퓨터에 있어야합니다. 그래서 유연하지 않습니다.

레이크 스크립트에 copy_data과 함께 Pg 보석을 사용하는 것이 좋습니다.

+0

감사 Craig. 나는 COPY 명령을 사용하지만 많은 시행 착오를 거듭하면서 마법사를 사용하여 실제로 어떤 일이 일어 났는지에 대한 로그를 쉽게 볼 수 있다면 다음 번에 그 복사본을 복사 할 수 있다고 생각했습니다. 당신의 솔루션은 그것을 할 수있는 방법처럼 보이지만 지금은 복사 방법을 습득하는 것이 더 쉽습니다. 다시 한번 감사드립니다. –

관련 문제