2014-11-26 4 views
-1

매일 CSV 형식의 데이터를 가져옵니다. 당신이 emp_leave_idEMP_LEAVE_reason 열 데이터가 다음 열로/이동 흩어져있는 것을 볼 수 있습니다 여기에Talend 데이터 통합을 사용하여 한 열 데이터가 다른 열에있는 파일을 읽는 방법

Emp_ID  emp_leave_id   EMP_LEAVE_reason    Emp_LEAVE_Status Emp_lev_apprv_cnt 

E121   E121-   21 Head ache, fever, stomach-ache Approved   16 

E139   E139_   5 Attending a marraige of my cousin Approved   03 

: 같은

예 데이터 보인다.

그래서 tFileInputDelimited와 다양한 읽기 패턴을 사용하여 문제가 발생하여 대상 데이터베이스에 데이터를 올바르게로드 할 수 없었습니다. 주로 Talend의 해당 구성 요소로 데이터를 올바르게 읽을 수 없습니다.

내가 원하는 형식으로 내 데이터를 가져 오기 위해이 CSV를 올바르게 구문 분석 할 수있는 방법이 있습니까?

+1

예제 데이터를 제대로 정리하지 못했는지, Excel (또는 다른 스프레드 시트 프로그램)의 데이터 캡쳐 화면에 대한 링크를 게시하거나 직접 텍스트를 코드 블록을 포맷하려고하기보다. 또한 tFileInputDelimited 구성 요소를 구성한 방법에 대한 스크린 샷을 보는 것도 좋습니다. – ydaetskcoR

+0

그래서 직접 텍스트가 'Emp_ID, emp_leave_id, EMP_LEAVE_reason, Emp_LEAVE_Status, Emp_lev_apprv_cnt'처럼 보일 수 있습니다. – ydaetskcoR

+0

입력 데이터를 수정할 수 없다면 우리는 당신을 도울 수 없습니다. – ydaetskcoR

답변

0

이것은 아마도 TSV 파일 일 것입니다. 하지 Talend 확실하지만, uniVocity 당신을 위해이 파일을 구문 분석 할 수 있습니다

TsvDataStoreConfiguration tsv = new TsvDataStoreConfiguration("my_TSV_datastore"); 
tsv.setLimitOfRowsLoadedInMemory(10000); 
tsv.addEntities("/some/dir/with/your_files", "ISO-8859-1"); //all files in the given directory path will accessible entities. 

JdbcDataStoreConfiguration database = new JdbcDataStoreConfiguration("my_Database", myDataSource); 
database.setLimitOfRowsLoadedInMemory(10000); 

Univocity.registerEngine(new EngineConfiguration("My_ETL_Engine", tsv, database)); 
DataIntegrationEngine engine = Univocity.getEngine("My_ETL_Engine"); 

DataStoreMapping dataStoreMapping = engine.map("my_TSV_datastore", "my_Database"); 
EntityMapping entityMapping = dataStoreMapping.map("your_TSV_filename", "some_database_table"); 
entityMapping.identity().associate("Emp_ID", "emp_leave_id").toGeneratedId("pk_leave"); //assumes your database does not keep the original ids. 
entityMapping.value().copy("EMP_LEAVE_reason", "Emp_LEAVE_Status").to("reason", "status"); //just copies whatever you need 

engine.executeCycle(); //executes the mapping. 

는 TSV 입력을 구문 분석 할 CSV 파서를 사용하지 마십시오. 그것은 이스케이프 시퀀스를 제대로 처리하지 못합니다 (예 : 값 내부의 \ t, 탭 문자 대신 이스케이프 시퀀스가 ​​표시됨). 값에 따옴표가 있으면 분리해야합니다 (CSV 파서가 닫는 따옴표 문자 및 다른 따옴표를 찾을 때까지 문자 읽기 유지)

공개 : 나는이 라이브러리의 저자입니다. 오픈 소스이며 무료입니다 (Apache V2.0 라이센스).

관련 문제