database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 4459 게시물 읽기
No. 4459
\copy 명령에 대한질문입니다.
작성자
러프
작성일
2002-12-05 10:03
조회수
1,445

대량의 자료(솔직히 다른 디비에 비하면 그리 크다고 말할수는 없는양입니다.)를 디비에 인서트할때 속도가 너무 느린것을 알게됐습니다.

그래서 로더를 찾던중 \copy명령을 찾고서 그것을 사용하려고 하는데요.

콘솔에서는 잘먹히는데. JDBC를 이용하면 안되네요.

String query = "\\copy customer from 'E:/work/member.txt' using delimiters '|'";

stmt = con.createStatement();

stmt.executeUpdate(query);

이런식으로 프로그램을 짜서 실행하면

\부분에서의 파싱 에러가 납니다.

\\을 전부 없애면 COPY명령으로 인식해서 권한 에러가 나오구요.

해결방법을 알려주시면 감사하겠습니다.

이 글에 대한 댓글이 총 4건 있습니다.

\COPY 명령어는 없습니다. COPY 명령어가 있을뿐이지요. COPY 명령시 권한 에러가 난다는 것은 어떤 의미인지요.

정재익(advance)님이 2002-12-06 07:30에 작성한 댓글입니다.

먼저, 답변 달아주신것에 대해 감사드립니다. \copy명령은 제가 정보문화사에서 나온 Beginning Databases with PostgreSQL 에서 보고 사용해본

것입니다. 거기에서는 COPY명령어 보다 \copy명령어를 사용하라고 권하더군요. 제가 적은 쿼리 부분을

postgresql 콘솔에서 실행하면 테이블에 실제

데이터가 들어갑니다. 저는 이것을 자바에서 JDBC를

사용하여 제어를 하려는 것이지요.

COPY만을 사용했을때 나타나는 에러는 다음과 같습니다.

java.sql.SQLException: ERROR: You must have Postgres superuser privilege to do

a COPY directly to or from a file. Anyone can COPY to stdout or from stdin. Ps

ql's \copy command also works for anyone.

 

at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:94)

at org.postgresql.Connection.ExecSQL(Connection.java:398)

at org.postgresql.jdbc2.Statement.execute(Statement.java:130)

at org.postgresql.jdbc2.Statement.executeUpdate(Statement.java:73)

at TestCopy.main(TestCopy.java:32)

러프님이 2002-12-06 08:39에 작성한 댓글입니다.

postgres계정외에는

from또는 to절에 stdin,stdout으로 밖엔 안됨니다.

황치영(gau)님이 2002-12-06 21:53에 작성한 댓글입니다.

기존의 insert 로도 어느정도는 빠르게 replication 가능은 합니다. 단 몇가지를 하셔야 하는데,

transaction 을 사용하시고, index 나 constraint 는

다지우신후에 나중에 한꺼번에 만드시고, replication 하는 프로그램도 multi-thread 로 하시면 속도가 어느정도 상당히 빨라집니다.

블루님이 2002-12-10 14:45에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4462serial, PK, FK [3]
이경욱
2002-12-06
1279
4461Mysql에서는 문제 없던게 postgres에서는 안되니 황당하군요. [4]
박지영
2002-12-05
1074
4460DB 구동시키는데 다음과 에러가 생기는군요 흑흑 [2]
김태형
2002-12-05
1302
4459\copy 명령에 대한질문입니다. [4]
러프
2002-12-05
1445
4457꼬리에꼬리를 무는 자료 알아내기.. [4]
박기원
2002-12-02
1082
4456MySQL에 있는 replace 명령같은 기능은? [1]
윤명식
2002-11-30
1079
44557.3 이 나왔네요-- [3]
^^
2002-11-29
3456
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다