2016-04-28 73 views
1

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

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

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

你会以时间效率明智地去?我有点试图使用第一个,因为它更容易处理DB中的json文件。 如果您有任何其他建议,也欢迎!

+0

你是什么意思在db中处理json文件?你打算在数据库中存储纯粹的json文档吗?虽然postgresql的JSONB字段非常酷,但这并不是使用postgresql的理想方式。一个nosql解决方案会更好。 – e4c5

+0

不,我的意思是从JSON导入数据,我知道JSONB,但在我的情况下,它不会非常有用 –

回答

1

JSON或CSV

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

CSV支持COPY但JSON不支持。

直接插入值。

如果您只需插入一些(或甚至几千)记录但不适用于大量记录,这将是缓慢的方法。

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

+0

数据有时会变得非常大,所以第一个建议的方法更好。 但是是不好使用COPY FROM的JSON?该方法表明[这里](http://stackoverflow.com/questions/33129526/loading-json-data-from-a-file-into-postgres)比使用CSV需要多一点时间,但它仍然安全吗?我们只需要确保json文件中的每行代表数据库中的一行(我们基本上将批量导入json文件到临时表中,然后提取所需的值并将它们插入到相应的列中) –

+0

是的,例如,整个记录将作为单个列加载 - 一个JSON字段(现在由JSONB字段过时)。这不是关系。如果你想以这种方式存储你的数据,这是完全可能的和安全的,但不是最优的。您没有使用RDBMS的任何功能 – e4c5

+0

因此,基本上没有其他方法可以在不通过jsonb字段或读取字符后读取整个json数据字符的情况下获取json数据? –