2016-08-19 2 views
0

SqlPlus의 원격 데이터베이스에서 데이터를 복사하려고합니다. 나는 seqId가 다수 존재하고 createDate 타임 스탬프되고 너무Sql Plus 타임 스탬프가 포함 된 테이블을 복사하는 방법

table_name: source_table 

seqId | createDate 

1 | 10-SEP-02 02.10.10.123000 AM 

2 | 10-SEP-01 02.10.10.123000 AM 

같은 소스 테이블을 가지고있다.

나는 내 테이블에 데이터를 복사하려고 :

COPY FROM &user_name/&[email protected]&database 
REPLACE x_source_table USING 
SELECT * 
FROM source_table; 

하지만 유효하지 않은 데이터 오류가 발생합니다.

은 그때에만 createDate을 복사하려고 시도

COPY FROM &user_name/&[email protected]&database 
REPLACE x_source_table USING 
SELECT cast(createDate as Date) as createDate 
FROM source_table; 

와 구문에 createDate을 캐스트하려고하지만 중 하나가 작동하지 않았다.

+0

"나는 할 수 없다"라는 말 대신 정확한 오류를 나열해야합니다. 도움을 받으려면 세부 사항이 필요합니다. 왜 createDate 열이 문제를 일으키는 것 같아요? 오 COPY는 TIMESTAMP 데이터 타입을 지원하지 않습니까? –

답변

0

COPY 명령으로 TIMESTAMP 데이터 유형을 지원하지 않으므로 COPY을 사용할 수 없습니다. "COPY 명령은 Oracle8 이후에 도입 된 데이터 유형이나 기능을 처리 할 수 ​​있도록 향상되지 않았습니다. COPY 명령은 향후 릴리스에서 더 이상 사용되지 않을 것입니다." 다음은 10g에 대한 설명서입니다. https://docs.oracle.com/cd/B19306_01/server.102/b14357/apb.htm.

대체 방법을 찾아야합니다. 대신이 방법을 사용해도됩니다.

truncate x_dest_table; 
insert into x_dest_table select <column_list> from x_source_table 
-- or from [email protected] if you have a database link; 
commit; 

아니면 내보내기/가져 오기를 사용할 수 있습니까? 또는 원본 테이블의 csv를 가져 와서 sqlldr을 사용하여로드 할 수 있습니까?

적어도 몇 가지 옵션이 있습니다. 우리가 끝내고있는 일을 알려주십시오.

+0

고맙지 만 sqlplus로 복사 작업을 수행해야했기 때문에 sql에 copy 명령을 사용해야했지만 가능하지 않다면이 방법을 포기할 수있었습니다. 가장 가까운 것은 select 문에서 타임 스탬프 열을 뺀 테이블을 복사하는 것입니다. – Cheng12345