【问题标题】:H2 database - CSVREAD - skip loading header line of the csv file into dbH2 数据库 - CSVREAD - 跳过将 csv 文件的标题行加载到数据库中
【发布时间】:2012-01-06 17:15:42
【问题描述】:

我在我的 java 应用程序中使用 H2 DB。我想将 .csv 文件加载到数据库。此文件包含列标题作为文件的第一行。因此,当通过CSVREAD 命令将文件加载到数据库中时,H2 也在尝试解析第一行,因此失败了。

那么如何跳过加载第一行。在我用来将文件加载到数据库的查询下方:

"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', "

【问题讨论】:

  • 您问题中的陈述被截断;你能补充缺失的部分吗?如果可能,还请添加换行符,以便于阅读。

标签: csv h2


【解决方案1】:

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=|');

【讨论】:

  • 对于tsv 文件fieldSeparator 应该是char(9) 而不是rowSeparator,因此SELECT * FROM CSVREAD('data/test.tsv', null, 'fieldSeparator=' || CHAR(9)); 对于tsv 是正确的。
  • 该字段分隔符中的| 是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2015-03-21
相关资源
最近更新 更多