2017-12-21 18 views
0

oracle 데이터베이스에서 sql 로더를 통해 데이터를로드해야합니다. 제어 파일 에 의해 필드 종료 됨 언급. SQL 로더는 필 클을 구분 기호로 인식 할 수 없습니다.sql 로더 제어 파일에 FIELDS TERMINATED BY ¶ (Pilcrow)

HDR¶name¶Id 
BDY¶rohan¶2 
TRL¶1 
+0

그래서 구분 기호를 변경 하시겠습니까? – SaggingRufus

+0

은 변경할 수 없습니다.당신은 천칭 자리에 대한 문자셋에 대해 어떤 생각을 가지고 있습니까 – user9109204

+0

그리고 나는 정직하게 다른 시스템에 의해 생성 된 데이터 파일 – SaggingRufus

답변

0

같은

데이터는이 시도 : 그것은 당신을 도움이 될 수 있습니다.

Fields terminated by '¶' optionally enclosed by '"' 

데모 : 첫째, 내가 만든 내가 명령 프롬프트에서 하나의 제어 파일 test.ctl

OPTIONS (ROWS=5000) 
LOAD DATA 
INFILE * 
BADFILE './test_table1.BAD' 
DISCARDFILE './test_table.DSC' 
APPEND INTO TABLE test_table1 
Fields terminated by '¶' optionally enclosed by '"' 
trailing nullcols 
(
    ID, 
    ENAME, 
    LNAME  
)BEGINDATA 
1¶A¶B 
2¶C¶D 

실행을 만든

CREATE TABLE test_table1 
(
ID NUMBER, 
ENAME VARCHAR2(200), 
LNAME VARCHAR2(200) 
); 

하나 개의 테이블 :

sqlldr control = 'test.ctl' userid = username/password 

작동합니다. 나를 위해. 참조 hex_value을 찾기 위해 당신은 쿼리 아래에 사용할 수 있습니다

Fields terminated by X'C2B6' 

: 처음

0
S_Sauden에 의해 주어진 예뿐만 아니라 나를 위해 작동

..

CTL을 파일에 진수 값과 노력에 의해 시작 :

select rawtohex(utl_raw.cast_to_raw('¶')) from dual; 

위의 생각은 당신을 위해 작동하지 않는 경우 다음 인코딩을 확인하실 수 있습니다

file -i datafile 

명령이 작동 위 linux의 캐릭터 세트 [인코딩]을 얻을 : 업로드하려는 파일의. 당신은 sqlldr에 대한 ctl 파일에 아래의 정보를 사용할 수 있습니다

load data 
CHARACTERSET UTF8 
infile 

그것의 중요한 당신이 번역 데이터가 손실되지 않도록하기 위해 DB, 파일, 로더의 characterset을 동기화 할 수 있습니다.

SELECT * FROM V$NLS_PARAMETERS 

은 또한 당신이 당신의 OS 환경이 올바른 NLS_LANG 환경 변수 설정이 있는지 확인해야합니다 쿼리 아래

는 오라클 DB 환경에 대해 당신에게 정보를 제공합니다. 아무 것도 설정되지 않은 경우 필요한 조치를 수행하십시오. 아래의 참조 링크를 사용하여 전체에 대한 안내서를 얻을 수 있습니다.

export NLS_LANG=[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET] 
For example: American_America.UTF8 

참조 Link

importance of characterset에 대한 몇 가지 이해 & 참조 링크를 확인하시기 바랍니다.

+0

실제로 리눅스 환경에서 관찰 한 것은 제어 파일에서 잘 작동했지만 Windows 환경에서는 작동하지 않아 참조 용으로 -> https://asktom.oracle.com/pls/apex/asktom을 읽었습니다. search? tag = differrent-character-set-and-nls. 그런 다음 NLS_LANG = American_America.UTF8 내보내기와 제어 파일 문자 집합 WE8ISO8859P1을 제공했습니다. – user9109204