2012-01-06 5 views
3

내 Java 응용 프로그램에서 H2 DB를 사용하고 있습니다. .csv 파일을 DB에로드하려고합니다. 이 파일에는 파일의 첫 번째 행으로 열 머리글이 들어 있습니다. 따라서 CSVREAD 명령을 통해 DB에 파일을로드하는 동안 H2는 첫 번째 행을 파싱하려고하므로 실패합니다.H2 데이터베이스 - CSVREAD - CSV 파일의 헤더 행을 db로로드 건너 뛰기

첫 줄로드를 건너 뛰는 방법. 쿼리 아래 나는 DB에 파일을로드하는 데 사용하고 있습니다 :

"CREATE TABLE TEST (CIRCLE VARCHAR_IGNORECASE(50), MSISDN VARCHAR_IGNORECASE(50), PORT_IN_DATE TIMESTAMP, OPERATOR VARCHAR_IGNORECASE(255), PRODUCT_TYPE VARCHAR_IGNORECASE(255), PORT_ID VARCHAR_IGNORECASE(255)) AS SELECT * FROM CSVREAD('src/test/resources/test.csv', " 
+1

질문 문이 잘 렸습니다. 누락 된 부분을 추가 할 수 있습니까? 가능한 경우 줄 바꿈을 추가하여 읽기 쉽도록하십시오. –

답변

11

CSVREAD 기능과 및 열 머리글없이 두 파일을 지원합니다.

SELECT * FROM CSVREAD('test.csv'); 
SELECT * FROM CSVREAD('data/test.tsv', null, 'rowSeparator=' || CHAR(9)); 

을하고 파일을 열 머리글을 포함하지 않는 경우, 다음 함수에서 열 목록을 제공 : 파일이 열 머리글을 포함하면, 예를 들어, 함수에서 열 목록을 제공하지 않습니다 예를 들면 다음과 같습니다.

SELECT * FROM CSVREAD('test2.csv', 'ID|NAME', 'charset=UTF-8 fieldSeparator=|'); 
+0

+1 @Thomas에 적용됨 –

+0

'tsv' 파일'fieldSeparator'는'rowSeparator' 대신'char (9)'이어야합니다. 따라서'SELECT * FROM CSVREAD (data/test.tsv ', null,'fieldSeparator = '|| CHAR (9));'는'tsv'에 대해 정확합니다. – dnivog

+0

그 필드에서'| '는 무엇을 의미합니까? – Snekse