【问题标题】:Efficient data import PostgreSQL DB高效数据导入PostgreSQL DB
【发布时间】:2016-08-23 10:08:42
【问题描述】:

我刚刚设计了一个 Pg 数据库,需要选择一种用数据填充我的数据库的方式,数据由 txt 和 csv 文件组成,但通常可以是包含带分隔符的字符的任何类型的文件,我在 java 中编程为了使数据具有相同的结构(有很多不同类型的文件,我需要找到文件的每一列代表什么,以便我可以将它与我的数据库的一列相关联)我想到了两种方法:

  • 将文件转换为一种相同类型的文件 (JSON),然后让数据库定期检查 JSON 文件并导入其内容。

  • 通过 JDBC 直接连接到数据库,将字符串发送到数据库(我仍然需要创建一个备份文件,其中包含插入到数据库中的内容,因此在这两种情况下都会创建并写入一个文件)。

您会在时间效率方面采取哪些措施?我有点想使用第一个,因为在数据库中处理 json 文件会更容易。 如果您有任何其他建议也欢迎!

【问题讨论】:

  • 处理数据库中的json文件是什么意思?您是否打算将纯json文档存储在数据库中?虽然 postgresql 的 JSONB 字段非常酷,但这并不是使用 postgresql 的理想方式。一个 nosql 解决方案会更好。
  • 不,我的意思是从我知道的关于 JSONB 的 json 导入数据,但在我的情况下它不会很有用

标签: java json database postgresql data-import


【解决方案1】:

JSON 或 CSV

如果您可以将数据转换为 CSV 或 JSON 格式,那么 CSV 是您的选择。这是因为您将能够使用COPY FROM 一次将大量数据批量加载到 postgresql 中。

COPY 支持 CSV,但不支持 JSON。

直接插入值。

如果您只需要插入几条(甚至几千条)记录,但不适合大量记录,因为它会很慢。

如果您选择这种方法,您可以使用 COPY TO 创建备份。但是,如果您觉得需要使用您的 java 代码创建备份文件。选择 CSV 格式意味着您可以像上面讨论的那样批量加载。

【讨论】:

  • 数据有时会变得非常大,因此建议的第一种方法更好。但是 JSON 与 COPY FROM 一起使用有那么糟糕吗? here 指示的方法比使用 CSV 需要更多时间,但它仍然是安全的,对吗?我们只需要确保 json 文件中的每一行都代表数据库中的一行(我们基本上将 json 文件批量导入到临时表中,然后提取所需的值并将它们插入到相应的列中)
  • 是的,在该特定示例中,整个记录被加载为单个列 - JSON 字段(现在已被 JSONB 字段过时)。那不是关系。如果您想以这种方式存储数据,这是完全可能且安全的,但不是最优的。您没有使用 RDBMS 的任何功能
  • 所以基本上没有其他方法可以在不通过 jsonb 字段或逐个字符读取整个 json 数据字符的情况下获取 json 数据?
  • 那么 JSONB 实际上并不是强制性的,如果需要,您可以将数据存储在文本或 varchar 字段中。不同之处在于您可以对它们执行的多功能性或查询以及速度。
猜你喜欢
  • 2019-10-05
  • 2021-05-19
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 2012-10-20
  • 2015-04-19
  • 2019-01-30
相关资源
最近更新 更多