2012-01-06 74 views
3

我在我的java應用程序中使用H2數據庫。我想將.csv文件加載到數據庫。該文件包含列標題作爲文件的第一行。因此,當通過CSVREAD命令將文件加載到數據庫中時,H2正試圖解析第一行並因此失敗。H2數據庫 - CSVREAD - 將csv文件的標題行跳轉到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

您的問題中的陳述被截斷;你能添加缺失的部分嗎?如果可能,請添加換行符,以便閱讀。 – 2012-01-06 20:50:35

回答

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 – 2012-01-07 01:39:33

+0

對於'tsv'文件'fieldSeparator'應該是'char(9)'而不是'rowSeparator',因此'SELECT * FROM CSVREAD('data/test.tsv',null,'fieldSeparator = '|| CHAR(9));'是'tsv'正確的。 – dnivog 2017-06-12 12:35:52

+0

'|'在該字段中的含義是什麼? – Snekse 2017-10-06 15:35:30

相關問題