Postgresql数据加载到 mongodb数据库

Postgresql数据加载到 mongodb数据库,第1张

Postgresql数据加载到 mongodb数据库 一、概述

介绍一种用python将pg数据到mongodb数据的转换方法。转换过程简单,且使用python开发,只需极少的代码量。就可以把数据库的一个模式下的所有表转换到mogodb中的集合中。

二、数据转换所需要的py包

Python需要连接pg数据库和mongodb数据库,从pg中读取数据,然后数据写入到mongodb中。Pg的开发包是psycopg,mongodb的开发包是pymongo。安装使用pip就可以了。这里就不做介绍如何使用pip。朋友们可以百度下就行了。本文中所用的pip是pip3,python的版本是3+plus。

三、转换思路

转换分为二个阶段:从pg中读取数据,然后连接mogodb数据库,进行数据写入。在Pg中指定一个模式,轮询获取所有的表,然后针对每个表获取其相应的列。将表和列作为mongodb的集合和字段信息,再结合表的每一条记录。构造成mongodb的文档形式,将数据推送到mongodb中。

四、转换实现 1)包的引入

引入psycopg 和pymongo包,在文件开头导入即可。
import psycopg
import pymongo

Python中连接pg的方法和步骤如下,和一般的连接数据库 *** 作相同,涉及到如下几个对象,connection连接对象,cursor游标,以及结果集等。

Python中的mongodb连接方法如下,连接字符串由monogd服务定义,
mogoclient = pymongo.MongoClient(“mongodb://192.168.56.103:8800/”)。

获取指定的数据库方法如下,括号内为数据库的名称

mogodb = mogoclient[“test”]

再根据数据库对象可以获取集合对象

mycol = mogodb[table]

其中,Mogoclient的类型为pymongo.mongo_client.MongoClient,代表客户端与mogondb的连接;Mogodb的类型为pymongo.database.Database;Mycol的类型为pymongo.collection.Collection,表示一个集合。

2)pg视图

遍历一个pg的模式下所有表,以及表对应的列,有很多元数据视图可以用。这里挑选information_schema.tables与information_schema.columns。因为,这两个视图根据给定的数据库名和模式可以直接查出表和列表,中间不需要再借助其它的视图,转换oid之类的元素,相对简单。
查找方式如下,

3)读写转换

results=psql_querydbsql(‘select * from :table_schema.:table’)
然后遍历结果集,针对每一条记录,按表名对集合名,列名对字段属性,构造成如下的mongodb文档。
文档1={‘列名1’:字段值1,‘列名2’:字段值2,‘列名3’:字段值3,‘列名4’:字段值4,…}

最后调用
mycol.insert_one(文档1)
也可以同时批量插入多个文档,这可以使用方法mycol.insert_many
在这个步骤中,会遇到类型从pg转换到mongodb失败的情形。如pg中Decimal(‘5’)的这个类型,可以根据表结构的实际类型,采用int(字段值),或float(字段值)进行转换。对于日期类型,如果转换成mongodb时间戳失败,可使用datetime.fromordinal(字段值.toordinal())来进一步转换。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/904547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存