问题标签 [univocity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Univocity - 解析 CSV 时检测缺失的列
我正在使用 Univocity 库来解析 CSV,它运行良好,但我需要一种方法来检测正在解析的文件的列是否少于所需的列
例如,如果我期待一个 3 列文件,列映射到 [H1,H2,H3] 那么我收到一个文件(没有标题),看起来像
使用时
这将返回null,相反,我需要这个文件要么无法解析,要么我可以检查它是否遗漏了一列并停止处理它
有什么办法可以做到这一点?
scala - Spark Univocity 解析器 - LineSeparatorDetection 不起作用
我正在尝试使用具有以下选项的 univocity csv 解析器来解析此csv 文件
选项 :
该文件有 30 列,但是当我解析它时显示为 2302 行。
该文件有 \r 作为行分隔符。(正如我在解析时看到的那样)
将行分隔符显式设置为 \r 可解决此问题。但我也会将文件以 \n 作为分隔符替换为 \r。要解决此设置,将setNormalizedLineEndingWithinQuotes(false)
解析 ,但在引用所有值的其他文件中失败。(再次无法检测到分隔符)。
任何可能的解决方法?
apache-spark - Univocity CSV Parser setDelimiter 方法的 Spark java.lang.NoSuchMethodError
我正在尝试运行使用 Univocity CSV Parser 的 Scala Spark 作业,并且在升级以支持字符串分隔符(与仅字符)之后,当我在集群中运行我的 jar 时出现以下错误。在我的 IDEA IDE 中本地运行它会产生没有错误的预期结果。
我尝试了以下方法:通过检查依赖关系树消除了所有冲突的单义性解析器: mvn dependency:tree -Dverbose -Dincludes=com.univocity:univocity-parsers 产生:
我还尝试在运行 spark 作业时设置 spark.executor.userClassPathFirst=true 配置,但行为没有变化。
这是我的 pom.xml 中的依赖项部分:
我想知道 Spark 是否具有覆盖我的版本的内置依赖项(2.8 是第一个支持字符串参数的版本。以前,它只支持字符)。
有什么见解吗?
java - 为什么我需要结合 BeanListProcessor 调用 parseLine 两次
我正在使用 Univocity (2.8.2) 解析器逐行解析 CSV。它迫使我调用 parseLine("") 两次来设置标题。
我尝试在 CSVParserSettings 上设置标题。
当我省略第二个“parser.parseLine("name,age")”语句时,这会导致奇怪的行为。
正如您从测试中看到的那样,我调用了两次“parser.parseLine("name,age")"。如果我不这样做,解析器不会填充 bean。
java - Univocity - 如何在“格式自动检测”上定义分隔符的偏好顺序?
我正在尝试使用 Univocity格式自动检测来解析此 CSV 表:
如您所见,逗号 ',' 和空格 ' ' 的数量相同。问题是用于查找分隔符的启发式算法优先使用 ' ' 而不是 ',' 字符。
所以在这种情况下,检测到的分隔符是空格''。然后,单元格的值是错误的,因为逗号被视为值的一部分:
我看到有一个功能setDelimiterDetectionEnabled用于按优先级顺序定义分隔符,但我无法使其工作。
我像这样使用它:setDelimiterDetectionEnabled(true, ',', ' ')
,但仍然选择空格作为分隔符。
如果我在 CSV 表中删除 1 个空格(因此逗号会多于空格),则选择逗号作为分隔符。
这是代码,是scala,但我认为这无关紧要,因为该库是用java编写的:
我希望有 format.getDelimiter 逗号',',但实际分隔符是空格''
java - 将 Univocity 解析器与 Spring Batch 一起使用
我正在尝试在 Spring Batch 中使用 Univocity Parsers。我面临的问题是如何整合它们。
Spring Batch Chunk Steps 遵循给定文件每一行的流程:
我需要在 ItemReader 中使用Univocity。它对输入文件(即 CSV 文件)的每一行执行该方法。我唯一做的就是使用 a来读取项目并将其直接转换为我的 Java 对象,返回一个已解析的 Bean,但我不想一次加载所有记录,以避免异常。我没有找到其他可以帮助我的东西。
我曾尝试使用此答案作为示例,但无法弄清楚一次返回一个项目的任何内容。
read()
BeanListProcessor
List
OutOfMemory
如何在我的 ItemReader 中使用 Univocity 一次读取一行,仍然使用 BeanProcessor 将我的行自动解析为我的 Java 对象?
csv - 递归对象写入平面 csv 文件
我需要写这样的对象
棘手的想法是 csv 写入应该通过对象树递归地工作。还需要将 LocalDate 写为像 2019-11-05 fe 这样的字符串;
生成的 csv 文件应该是扁平的,如下所示:
user.id,user.name,user.role.name,user.role.activeFrom,user.role.owner.name
// 示例值
我已经尝试过 OpenCsv:
和 Univocity 解析器:
到目前为止没有运气。它们只能序列化为 csv 顶级对象。同样在 OpenCsv 中,我在序列化 LocalDate 时遇到了问题。你能帮助我吗?建议方法或图书馆?
spring - 如何使用spring-batch将univocity返回的项目列表写入数据库
我有一系列步骤,其中包括:
- 第 1 步:从数据库读取并写入 csv(第一站)
- 步骤 2:从数据库读取并写入 csv(第二站)
- Step3:将 spring-batch 与 Univocity 集成以比较第一站和第二站的 CSV
- Step4:比较后返回匹配项列表
- Step5:将列表写入数据库
- Step6:从数据库读取到csv
我被困在第5步。我不知道如何使用 spring-batch 直接从列表写入数据库。
我曾尝试使用 jdbc batchUpdate,但遇到“连接关闭”问题。
这是我的 RestController 类:第一个作业“作业”处理步骤 1-4。第二个调用(readFromPtrxList())将列表中的项目插入数据库,而第二个作业“pjob”从数据库读取并写入 csv 文件:
这是执行步骤 5 时的错误消息:
java - 当我更改 java 类中字段的数据类型时,为什么我的 Univocity 解析器会变慢?
我对这个工具的体验大约有 3 天。一切都很顺利,我有一个包含 3 个记录定义(标题、数据、预告片)的文件,并且正在使用带有 3 个 beanListProcessors 的 InputValueSwitch。
数据对象有大约 40 个属性,除了 1 之外都是字符串,出生日期定义为带有 @Format 注释的日期。将 patientDateOfBirth 定义为 Date 我可以在几秒钟内处理 34K 行,这是非常可以接受的。
但是,如果我将数据类型从 Date 更改为 String,对于相同的 34K 行,处理时间会增加到大约 5 分钟,这对我来说没有意义。这会为任何人敲响警钟吗?
apache-camel - 如何在骆驼单义性固定解析器中允许更短的行?
我有这样的文件
我在 UniVocityFixedWidthDataFormat 上设置了两个标题,名称为 num1 和 num2,长度为 5 和 3。解析器能够轻松读取前两行,但它在第三行抛出空指针异常。我怎样才能告诉我的解析器也读取较短的行。
这是堆栈跟踪