1
我使用Univocity解析器将结果集转换为CSV。如果字段存在于结果集中,我只希望用户提供的字段出现在输出CSV中。如果该字段不存在于结果集中,则相应的列应该为空。我有一个不修改SQL查询的限制。从CSV中排除字段
我使用的是excludeFields()方法,但它使输出CSV中的字段值与分隔符一起留空。
例如:
Name, Age, Email
Joe, 20, [email protected]
施加排斥域excludeFields后( “年龄”)。由于setHeaders()方法有一些已知问题,因此我使用自己的逻辑来设置标题。
Name, Email
Joe, , [email protected]
但我希望它是这样的:
Name, Email
Joe, [email protected]
有没有什么办法可以实现呢?
感谢您的持续支持。当前我正在做的一个解决方法是在将结果集写入它之后将StringWriter转换为InputStream:csvRoutines.write(resultSet,stringWriter)。将此InputStream馈送到CsvParser:csvParser.parse(new InputStreamReader(inputStream)),并调用csvParserSettings.selectFields(“Name”,“Email”),并再次使用CsvWriter写入输出csv。我不确定它是否是唯一有效的方法,但是如果结果集很大,我会发现在此过程中需要消耗大量时间。 – HyperioN
我们什么时候可以期待2.5.0的发布?因为我不认为在生产环境中使用2.5.0-SNAPSHOT是不明智的。 – HyperioN
您的解决方法可以正常工作。版本2.5.0将在一个月左右发布。 –