2013-08-05 2 views
0

데이터베이스 링크를 사용하여 SQL Server에서 Oracle로 테이블 데이터를 전송합니다. 내 연결 및 일부 전송이 원활하게 실행할 수 있지만 그들 중 일부는 나에게 다음과 같은 오류를 제공합니다 :MS SQL Server 데이터를 Oracle 테이블로 전송

SQL Error: ORA-00997: illegal use of LONG datatype 

내 쿼리는 다음과 같다 :

insert into FCPEERANALYSISPROPS select * from [email protected];

내가 볼려고 노력으로 (실패하는 칼럼 별도로 테이블의 각 열에 쿼리를 실행) SQL 서버에서 nvarchar(4000)으로 정의 된 하나의 열에 문제가 발생했으며 oracle은 다음과 같이 정의되었습니다. VARCHAR2(4000 CHAR).

이 문제에 대해 조언 해 주실 수 있습니까? 다음 실행

this에서
+0

http://docs.oracle.com/cd/E10405_01/doc/appdev.120/e10379/ss_oracle_compared.htm 여기 Oracl 사이의 데이터 유형 매핑 테이블을 찾을 수 있습니다 전자 및 SQL Server. 'NVARCHAR (n)'이'VARCHAR (n * 2)'에 매핑되어야한다고 말합니다. –

+0

@NenadZivkovic 당신은'VARCHAR2 (8000)'을 선언해야한다는 뜻입니까? – charilaos13

답변

0

nvarchar은 유니 코드입니다 동안, VARCHAR2bytes 것을 볼 수 있습니다 (2 바이트 이상) 따라서 당신은 NVARCHAR2 대신 VARCHAR2

  • 오라클에서

    • 중복 테이블 구조 필요 insert into ... select ... from
  • +0

    'varchar2'와'nvarchar2'는 모두 멀티 바이트 문자를 저장할 수 있습니다; 'varchar2'는 [바이트 수 또는 문자 수로 정의됩니다] (http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements001.htm#i54330). [개념 안내서] (http://docs.oracle.com/cd/E11882_01/server.112/e25789/tablecls.htm#autoId10)에 더 많은 내용이 있습니다. –

    +0

    동일한 오류가 발생합니다. 'alter table modify ( nvarchar2 (2000)); ' – charilaos13

    +0

    위의 링크에서 볼 수 있듯이'nvarchar2'와'varchar2'의 최대 크기는 ** 4000 바이트로 시작합니다. nvarchar (4000)는 ** 8000 ** 바이트입니다. 그래서 당신은 ** 2000 년 ** 2의 칼럼을 분리하고'left (YourColumn, 2000)'을 첫 번째 문자열로,'substring (YourColunmn, 2001, 2000)'을 두 번째 문자열로해야 할 것 같습니다. 다음 호는'CRUD','SELECT','DELETE'를 위해'UPDATE'와'INSERT'에 대해'view'가 필요한 기능을 복제 할 필요가있을 것입니다 열심히 –

    관련 문제