2014-01-30 1 views
0

SQL * Loader를 사용하여 통화 기호로 CSV 파일을로드하려고합니다. '£'기호는 '#'으로 대체되고 '€'기호는 NULL로 대체됩니다.SQL * Loader를 사용하여 통화 기호로드

제어 파일의 일부 설정을 조정해야할지 모르십니까?

여기 NLS_DATABASE_PARAMETERS에서 값은 다음과 같습니다

 
NLS_NCHAR_CHARACTERSET = AL16UTF16 
NLS_CHARACTERSET = AL32UTF8 

모든 포인터가 큰 도움이 될 것입니다. csv 파일의

추출 - 통화에 대한 열의

id,currency 
1234,£ 
5678,€ 

데이터 유형은 NVARCHAR2 (10)이다. 나는이 캐릭터 설정 문제가 생각

OPTIONS(skip=1) 
LOAD DATA 
TRUNCATE 
INTO TABLE schema_name.table_name 
FIELDS TERMINATED BY "," 
OPTIONALLY ENCLOSED BY '"' 
TRAILING NULLCOLS 
(
filler1 filler, 
filler2 filler, 
Id INTEGER EXTERNAL, 
Currency CHAR "TRIM(:Currency)" 
) 
+0

질문을 참조하십시오. csv 및 ctl 샘플과 데이터 유형을 포함하도록 수정했습니다. – KLeonine

+2

인코딩 된 CSV 파일은 어떤 문자 집합입니까? –

+0

잘 모르겠다. 클라이언트가 xlsx를 보냈는데 내용을 새 파일 (MS Excel 사용)에 복사하여 쉼표로 구분 된 파일 (* .csv)로 저장했습니다. 이것 때문에 내가 직면하고있는 또 다른 문제는 각 줄 끝에 CR과 LF가 추가된다는 것입니다. 오라클 테이블에 데이터가로드 된 후 NULL로 바꿀 수 있습니다. – KLeonine

답변

1

-

다음은 CTL 파일입니다.

sqlloader 파일의 문자 집합을 UTF8로 설정 했습니까?

CHARACTERSET UTF8 

또한 파일 자체는 UTF8로 인코딩 되었습니까?

+0

CHARACTERSET 매개 변수는 [데이터 파일]의 문자 집합입니다 (http://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_control_file.htm # SUTIL10870) ... 데이터 파일이 사실 UTF8 인 경우에만 사용됩니다. 문제로 판단하면 그게 _ _ 아닙니다 _ – Ben

+0

좋습니다. 그냥 추측. 이런 종류의 문제를 많이 보아 왔습니다. 이것을 확인하고 다시 돌아올 것입니다. –

+0

어쨌든 파일 인코딩이었습니다. 다행이 문제를 발견했습니다. –

1

포인터에 대해 저스틴과 패트릭에게 감사드립니다!

파일이 UTF-8로 인코딩되지 않았습니다. 파일을 UTF-8 인코딩으로 변환했는데 성공했습니다!

메모장을 사용하여 파일 인코딩을 변환하는 방법을 모르는 사람들 (나처럼, 방금 배웠습니다) : 메모장에서 새 파일 만들기 ++ -> 인코딩으로 이동 -> UTF- 8 -> 내용을 복사하여 붙여 넣기 -> .csv 파일로 저장하십시오.

관련 문제