用于将数据摄取到ioexplorer数据库的cli。

ioexplorer-dataloader的Python项目详细描述


ioexplorer数据加载器

此存储库包含用于命令行工具的代码,用于管理数据集并将其摄取到Postgres数据库中,供IOExplorer Web应用程序以后使用。

先决条件

这个cli有三个主要依赖项:dockernode,以及python(特别是python 3)。

安装说明如下:

  • dockerhttps://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_modenode_env在两个上下文之间轻松切换。此外,环境变量ioexplorer_graphql_url也会添加到生产环境中,因为生产环境中的进程将通过Docker网络而不是开发环境中的本地主机进行互连。请确保在开发中未设置ioexplorer图形ql url,否则图形ql客户端将尝试在错误的url连接到图形ql api。

启动数据库。

请注意,数据库尚未激活,我们只将环境正确设置为连接到数据库。通过运行启动数据库

$ iodl database start

现在应该启动数据库。数据库只是一个Docker容器,运行postgres图像,因此您可以看到它是用Docker ps运行的。

将apsqlshell打开到数据库中。

现在让我们打开一个连接到我们新创建的数据库的psqlshell:

$ iodl database shell
psql (11.0 (Debian 11.0-1.pgdg90+2))
Type "help" for help.

ioexplorerdb=# \dt
Did not find any relations.

消息找不到任何关系。让我们知道此数据库完全为空且无模式。

将迁移应用到我们的数据库。

iodlcli有一个用于生成ioexplorer数据库架构的当前生产版本的迁移。要应用所有这些迁移,请运行:

$ iodl database migrate

现在,如果您打开另一个psqlshell并列出关系,您将得到预期的:

npm i -g sequelize sequelize-cli pg
0

现在我们的数据库已经准备好获取一些数据。

初始化数据集

cd到要上载的数据集中。如果你没有,就找瑞安要一个。 TOdo:上载示例数据集。

数据集应具有以下目录结构:

npm i -g sequelize sequelize-cli pg
1

注意:实际上只需要用(r)表示的文件

我们现在要初始化数据集。此步骤将

  1. 运行一些快速验证以确保数据结构正确。
  2. 从用户那里收集一些元信息。
  3. 编写一个config.yaml文件,该文件存储有关此数据集的信息并有助于摄取数据。
<>运行:

npm i -g sequelize sequelize-cli pg
2
摄取数据集

由于已经形成了config.yaml文件,接收数据库非常简单。

npm i -g sequelize sequelize-cli pg
3

如果在接收过程中出现任何问题,将抛出一个错误,并删除已进入数据库(在错误发生之前)的数据。这将允许您诊断数据摄取的任何问题,并在不干扰数据库状态的情况下重新尝试摄取。

<H3>2。在AWS上生产

在生产aws服务器上运行时,上述内容有一些细微的差异:

  1. 您应该使用pip-3.6,而不是pip
  2. 环境变量位于~/ioexplorer/production.env
  3. iodl数据库shell将不再工作,因为生产数据库正在docker群中运行。如果您想插入数据库,可以使用 Docker容器ls。 查找图像postgres:latest名称是以ioexplorer_数据库开头的行。复制名称字符串,该字符串应类似于ioexplorer_database.1。<;一组随机字符>;。然后,执行docker container exec-it ioexplorer_database.1。<;一堆随机字符>;psql-d$ioexplorer_production_database_name

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java程序运行时错误   JavaAndroidStudio:与往常一样,四舍五入到next.5或.0   apache使用Java以表单数据形式上载文件   带矢量的java Freeflight相机如何正确旋转?   java如何以编程方式检索有关当前项目的语言、操作系统、体系结构等信息   java Twitter4J tweet实体?   java PdfBox编码异常   java在拖动未装饰的舞台时,如何强制光标停留在窗口上   JavaSpring注释扫描优化   java无法通过IntelliJ Idea在tomcat上运行服务   java在生命周期中如何拦截请求?   java中的数组返回错误