将Notion数据库导入PostgreSQL表
项目描述
当使用Notion数据库构建的系统达到足够规模时,会出现业务智能的需求。这需要从Notion中提取数据并将其加载到关系型数据库中。
原始作者没有找到方便的现成解决方案。提供从Notion同步到关系型数据库服务的服务依赖于笨拙的自动化,并涉及手动配置。
因此诞生了notion2pg。
它只做一件事:将任何Notion数据库转换为PostgreSQL表。它不需要任何配置。你在Notion中进行了更改?没关系,只需重新运行notion2pg以刷新表定义及其内容。
虽然notion2pg目前是alpha软件,但它成功导入了具有数十列和数千行的复杂数据库。它很可能会处理任何人类规模的Notion数据库。
快速入门
与您的集成以及相关数据库共享Notion数据库。
创建PostgreSQL数据库,例如
$ createuser notion $ createdb notion -O notion
安装notion2pg(需要Python ≥ 3.8)
$ pip install notion2pg
将Notion和PostgreSQL凭据设置为环境变量,例如
$ export NOTION_TOKEN=secret_... $ export POSTGRESQL_DSN="dbname=notion user=notion"
导入您的数据库,例如
$ notion2pg <database_id> <table_name>
其中 <database_id> 可以在数据库的URL中找到——它是一个类似于 858611286a7d43a197c7c0ddcc7d5a4f 的UUID,<table_name> 是任何有效的PostgreSQL表名。
命令行选项
--drop-existing
如果存在,则删除PostgreSQL表。如果您想反复导入表,覆盖任何先前的版本,这很有用。
版本化
将时间戳追加到PostgreSQL表的名称中。然后,创建一个指向该表的视图,这样它仍然可以在<table name>下被查询。如果您想反复导入表,但希望保留以前的版本,这很有用。
常见问题解答
为什么我的关系或汇总字段为空?
您的集成必须不仅有权访问您正在导入的表,还要访问涉及关系或汇总的每个表。
限制
表中的列顺序没有被保留。此信息在Notion的API中不可用。
“显示原始”和“显示唯一值”的汇总被忽略。请导入相关的表并在您的查询中连接它。
类型为“人员”的属性以人员ID导入,这可能不是最有用的表示。
每次导入都是一个完整的副本。由于Notion的API速度不是特别快,实际限制大约为10,000行。
变更日志
0.1
首次公开发布。
notion2pg-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c193588084089c5cae9b25ba66e97d8ad97c449f805f6d0628b4cc674c294a08 |
|
MD5 | b763637382d4eb27efe913c48c414a67 |
|
BLAKE2b-256 | b8126257ee8d41573f33a1c950ae59a7f6f461350802bcf1f1b3cd7fa75314eb |
notion2pg-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a94667107b6278871035b9701f4403d9082567819609dc85087b362434e95030 |
|
MD5 | 60e6979dd5f9b353e5333743b4db3394 |
|
BLAKE2b-256 | 6e0de5b95176020d3c2b11dc7be89878c30918bc28bf5b8286a60dfc95ecf317 |