2012-01-06 37 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

相关问题