gpt4 book ai didi

用于将 CSV 文件上传到数据库的 Java 桌面应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:01 25 4
gpt4 key购买 nike

我正在开发桌面应用程序(Extract Transform Load 类型的应用程序),需要使用 Java 作为前端、Oracle 作为后端将大型 CSV 文件(约 6 GB)上传到数据库,但我也对其他数据库和工具(即 SQLite、H2、HSQLDB、MySQL)持开放态度。

我尝试使用 OpenSource Java 库来解析和上传 CSV 文件,例如:

  1. OpenCSV
  2. Super CSV

这些库的问题是效率。他们需要太多时间来上传。例如,上传 4 GB 的 CSV 文件需要 6 小时。

有了这次经验,我决定尝试使用数据库实用程序来上传 CSV 文件。其中之一是 Oracle SQL*Loader。它速度更快并提供理想的结果。它可以删除空格、加载CSV文件到各种表、使用oracle函数如decode等。

但是,我有以下问题:

  1. 我找不到在 Java 中获取 SQL*Loader 的错误/日志并将其显示给用户的方法。

  2. 由于 SQL*Loader 是专有的,因此无法将其嵌入到我的应用程序安装中。例如,用户在安装我的应用程序之前需要单独下载并安装Oracle Client。另一件事是我需要在安装过程开始之前检查是否安装了 Oracle 客户端。

我寻找其他可能的解决方案,并发现了 SQLite 和 H2 等 headless 数据库。

在 SQLite 上,我使用 .import 命令上传 CSV 文件。但我无法用 Java 调用它。

我转向 H2 数据库,但我很难上传,因为它不支持转义标题行。

请让我知道您的建议。

谢谢你。

最佳答案

如果您有可用的 bash shell,您可以执行以下操作:

sqlite3 my_database_file <<< .import <(gawk 'NR>1 { a = $0; if(NR>2){print a;}}' my_csv_file) my_table_name

关于用于将 CSV 文件上传到数据库的 Java 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com