用于将数据摄取到ioexplorer数据库的cli。
ioexplorer-dataloader的Python项目详细描述
ioexplorer数据加载器
此存储库包含用于命令行工具的代码,用于管理数据集并将其摄取到Postgres数据库中,供IOExplorer Web应用程序以后使用。
先决条件
这个cli有三个主要依赖项:docker
和node
,以及python
(特别是python 3)。
安装说明如下:
docker
:https://docs.docker.com/install/节点
:https://nodejs.org/en/" rel="nofollow">https://nodejs.org/en/python
:http://www.python.org/downloads/" rel="nofollow">https://www.python.org/downloads/
安装了节点后,还需要全局安装一些用于与数据库交互的包。
npm i -g sequelize sequelize-cli pg
对于某些环境,尝试安装这些软件包时会出现权限错误。有一篇关于如何修复您的环境以避免这些错误的好文章。
要执行最终检查以确保安装了所有软件,请运行以下命令:
docker --version
node --version
npm --version
sequelize --version
python --version
注意,python--version
应该返回以3
开头的内容
安装cli
安装cli: 简单地说,
pip install ioexplorer-dataloader
iodl --help
确保你有最新的版本! 如果以前下载过,请运行以下命令:
pip install ioexplorer-dataloader --upgrade
示例工作流
<H3>1。基础课程帮助您熟悉数据加载器基础知识的工作流。
设置环境变量
首先,我们需要设置环境变量,以便与数据库交互。
例如,要建立一个开发数据库,我们可以创建一个名为development.env
的文件,其内容如下:
NODE_ENV=development
IOEXPLORER_MODE=development
IOEXPLORER_DEVELOPMENT_DATABASE_NAME=ioexplorerdb
IOEXPLORER_DEVELOPMENT_DATABASE_HOST=127.0.0.1
IOEXPLORER_DEVELOPMENT_DATABASE_PORT=5432
IOEXPLORER_DEVELOPMENT_DATABASE_USERNAME=root
IOEXPLORER_DEVELOPMENT_DATABASE_PASSWORD=password
然后调用set-a&;source development.env
。
注意:set-a
将导致导出所有修改过的bash变量。这相当于在development.env
<;line>;
调用导出。
为了使用生产数据库,您需要使用一个名为production.env
的文件,该文件看起来稍有不同
NODE_ENV=production
IOEXPLORER_MODE=production
IOEXPLORER_PRODUCTION_DATABASE_NAME=ioexplorerdb
IOEXPLORER_PRODUCTION_DATABASE_HOST=127.0.0.1
IOEXPLORER_PRODUCTION_DATABASE_PORT=5432
IOEXPLORER_PRODUCTION_DATABASE_USERNAME=root
IOEXPLORER_PRODUCTION_DATABASE_PASSWORD=password
IOEXPLORER_GRAPHQL_URL=http://api:4000/graphql
注意:这里的区别在于,对于许多环境变量,development
被替换为production
。这样,您可以同时加载生产和开发变量,并通过设置ioexplorer_mode
和node_env
在两个上下文之间轻松切换。此外,环境变量ioexplorer_graphql_url
也会添加到生产环境中,因为生产环境中的进程将通过Docker网络而不是开发环境中的本地主机进行互连。请确保在开发中未设置ioexplorer图形ql url,否则图形ql客户端将尝试在错误的url连接到图形ql api。
启动数据库。
请注意,数据库尚未激活,我们只将环境正确设置为连接到数据库。通过运行启动数据库
$ iodl database start
现在应该启动数据库。数据库只是一个Docker容器,运行postgres图像,因此您可以看到它是用Docker ps
运行的。
将apsql
shell打开到数据库中。
现在让我们打开一个连接到我们新创建的数据库的psql
shell:
$ iodl database shell
psql (11.0 (Debian 11.0-1.pgdg90+2))
Type "help" for help.
ioexplorerdb=# \dt
Did not find any relations.
消息找不到任何关系。
让我们知道此数据库完全为空且无模式。
将迁移应用到我们的数据库。
iodl
cli有一个用于生成ioexplorer数据库架构的当前生产版本的迁移。要应用所有这些迁移,请运行:
$ iodl database migrate
现在,如果您打开另一个psql
shell并列出关系,您将得到预期的:
npm i -g sequelize sequelize-cli pg
0
现在我们的数据库已经准备好获取一些数据。
初始化数据集
cd
到要上载的数据集中。如果你没有,就找瑞安要一个。
TOdo:上载示例数据集。
数据集应具有以下目录结构:
npm i -g sequelize sequelize-cli pg
1
注意:实际上只需要用(r)表示的文件
我们现在要初始化数据集。此步骤将
- 运行一些快速验证以确保数据结构正确。
- 从用户那里收集一些元信息。
- 编写一个
config.yaml
文件,该文件存储有关此数据集的信息并有助于摄取数据。
<>运行:npm i -g sequelize sequelize-cli pg
2
摄取数据集
由于已经形成了config.yaml
文件,接收数据库非常简单。
npm i -g sequelize sequelize-cli pg
3
如果在接收过程中出现任何问题,将抛出一个错误,并删除已进入数据库(在错误发生之前)的数据。这将允许您诊断数据摄取的任何问题,并在不干扰数据库状态的情况下重新尝试摄取。
<H3>2。在AWS上生产在生产aws服务器上运行时,上述内容有一些细微的差异:
- 您应该使用
pip-3.6
,而不是pip
。
- 环境变量位于
~/ioexplorer/production.env
iodl数据库shell
将不再工作,因为生产数据库正在docker群中运行。如果您想插入数据库,可以使用
Docker容器ls
。
查找图像是postgres:latest
且名称是以ioexplorer_数据库开头的行。复制名称字符串,该字符串应类似于ioexplorer_database.1。<;一组随机字符>;
。然后,执行docker container exec-it ioexplorer_database.1。<;一堆随机字符>;psql-d$ioexplorer_production_database_name
推荐PyPI第三方库