파일에서 테이블 (Postgres 데이터베이스)으로 데이터를 복사해야하는 그루비 스크립트를 작성했습니다. SQL 명령 COPY를 사용할 수는 있지만 수퍼 유저 (이 옵션은 사용할 수 없음)로 실행해야합니다. 또 다른 대안은 psql 명령 인 \ COPY를 사용하는 것입니다. 그러나 psql은 PostgresSQL의 명령 행 도구입니다. Groovy 스크립트 내에서 \ COPY를 호출 할 수있는 방법이 있습니까? Groovy 스크립트에서 psql 명령 호출
나는 시도 다음// groovy method to populate table
populateTable(tableName, filePath) {
def command = """psql -U<database name>"""
def proc = command.execute()
proc.waitFor()
command = """ \\COPY $tableName FROM '$filePath' WITH DELIMITER AS ','"""
proc = command.execute()
proc.waitFor()
}
내가 위의 코드에서 할 시도하고 psql의 명령 라인에 로그온 한 다음 \의 COPY 명령을 실행하지만, 나는 다음과 같은 오류가 발생합니다 :
를java.io.IOException: Cannot run program "\COPY": java.io.IOException: error=20, Not a directory
스크립트에서 \ COPY를 호출 할 수 있는지 궁금한가요? 그렇지 않다면 파일의 데이터를 테이블로 대량 복사 할 수있는 다른 방법이 있습니까? 거대한 파일이고 행 단위로 복사하는 것은 매우 비효율적입니다.
모든 도움을 주셔서 미리 감사드립니다.
감사합니다. 나는 위의 코드를 시도했다. def 커맨드를 확장하면, 이것은 내가 얻은 것입니다 : – rjane
빈 문자열을 얻거나 잘라 붙이기에 문제가 있습니까? –
답변 해 주셔서 감사합니다. 나는 위의 코드를 시도했다. 'psql -Usomedatabase -c "\\ COPY tablename FROM'filename 'from DELIMITER AS', '"'code '이 명령을 복사하여 붙여 넣은 다음, 명령이 잘 실행되었습니다. 그러나 스크립트에서 실행할 때 명령을 둘러싼 큰 따옴표 (-c 인수 뒤)가 인식되지 않는다는 오류가 발생합니다. 명령 줄에서이 명령을 실행할 때 큰 따옴표를 제거하면 동일한 오류가 발생합니다. 어떤 제안? – rjane