Java 高效的数据导入PostgreSQL数据库

Java 高效的数据导入PostgreSQL数据库,java,json,database,postgresql,data-import,Java,Json,Database,Postgresql,Data Import,我刚刚设计了一个Pg数据库,需要选择一种用数据填充数据库的方法,数据由txt和csv文件组成,但通常可以是包含带分隔符的字符的任何类型的文件,我正在用java编程,以便使数据具有相同的结构(有很多不同类型的文件,我需要找到文件的每一列所代表的内容,以便将其与数据库的一列相关联)我想到了两种方法: 将文件转换为同一类型的文件(JSON),然后让DB定期检查JSON文件并导入其内容 通过JDBC直接连接到数据库将字符串发送到DB(我仍然需要创建一个备份文件,其中包含插入DB的内容,因此在这两种情况

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

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

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

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

JSON或CSV

如果您可以自由地将数据转换为CSV或JSON格式,则可以选择CSV格式。这是因为您可以使用CSV一次性将大量数据批量加载到postgresql中

COPY
支持CSV,但不支持JSON

直接插入值。

如果您只需要插入几条(甚至几千条)记录,但不适合插入大量记录,则可以采用这种方法,因为这样会很慢


如果选择此方法,您可以使用COPY TO创建备份。但是,如果您觉得需要使用java代码创建备份文件,则选择CSV格式意味着您可以如上所述进行大容量加载。

在数据库中处理json文件是什么意思?您打算在数据库中存储纯json文档吗?虽然postgresql的JSONB字段很酷,但这并不是使用postgresql的理想方式。nosql解决方案会更好。不,我的意思是从json导入数据,我知道JSONB,但在我的情况下,它不会很有用数据有时会变得很大,所以建议的第一种方法更好。但是json与COPY一起使用有那么糟糕吗FROM?指定的方法比使用CSV要花费更多的时间,但它仍然是安全的,对吗?我们只需要确保json文件中的每一行都代表数据库中的一行(我们基本上将json文件批量导入到一个临时表中,然后提取所需的值并将其插入相应的列中)是的,在这个特定的示例中,整个记录作为一个列加载—一个JSON字段(现在由JSONB字段废弃)。这不是关系。如果您希望以这种方式存储数据,这是完全可能的、安全的,但不是最佳的。您没有利用RDBMSSo的任何功能基本上没有其他方法可以在不经过jsonb字段或读取整个json数据字符后获取json数据?jsonb实际上不是强制的或者,如果需要,您可以将数据存储在文本或varchar字段中。区别在于您可以对它们执行的多功能性或查询以及速度。