小编Dim*_*ris的帖子

使用 python 模块子进程的 pg_dump & pg_restore 密码

问题:使用PSQLpg_dumppg_restore在Python脚本,并使用该subprocess模块。

背景:我使用python 2.7来自本地主机(即Ubuntu 14.04.5 LTS)的以下脚本在 PSQL 服务器(即PostgreSQL 9.4.11)中创建表的备份,并将其恢复到Ubuntu 16.04.2 LTS较新版本的 PSQL 服务器(即PostgreSQL 9.6.2)中的远程主机(即)。

#!/usr/bin/python

from subprocess import PIPE,Popen

def dump_table(host_name,database_name,user_name,database_password,table_name):

    command = 'pg_dump -h {0} -d {1} -U {2} -p 5432 -t public.{3} -Fc -f /tmp/table.dmp'\
    .format(host_name,database_name,user_name,table_name)

    p = Popen(command,shell=True,stdin=PIPE)

    return p.communicate('{}\n'.format(database_password))

def restore_table(host_name,database_name,user_name,database_password):

    command = 'pg_restore -h {0} -d {1} -U {2} < /tmp/table.dmp'\
    .format(host_name,database_name,user_name)

    p = Popen(command,shell=True,stdin=PIPE)

    return p.communicate('{}\n'.format(database_password))

def …
Run Code Online (Sandbox Code Playgroud)

python subprocess pg-dump pg-restore psql

6
推荐指数
3
解决办法
1万
查看次数

从私有CKAN数据集下载资源

我的目标是使用(a)CKAN API或(b)CKANAPI CLI或(c)贴纸(如果(c)可能)下载在私有数据集中作为资源保存的文件.

我试图使用(a)下载文件失败.例如,使用资源URL和/ urllib2requests文件被下载但它已损坏(.zip)或CKAN登录页面存储在文件( .xls)中.

我尝试过使用(b)太不成功了.例如,使用以下代码:

ckanapi dump datasets dataset_name --datapackages=~/ckan_out -r http://localhost:5000 -a XXXXX-XXXX-XXXX-XXXX-XXXXXXXXX

URL xxxxxxxxxxxx refused connection. The resource will not be downloaded
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何具有下载资源功能的东西paster.

是否可以使用CKAN工具自动化下载私有资源的过程?

我应该将数据集从私有更改为公共,下载资源,然后再将它们设为私有?

任何见解都非常受欢迎.

CKAN 2.5.2,UBUNTU 14.04

python-2.7 ckan ubuntu-14.04

3
推荐指数
1
解决办法
960
查看次数

转储 CKAN 数据库并将其加载到另一个 CKAN 实例中

我曾多次尝试将 CKAN 数据库加载到不同主机中的另一个 CKAN 实例中,但均未成功。

我的工作流程如下:

A> 从生产主机 (host_p) 中提取数据库转储

paster db dump -c /etc/ckan/ckan_p_instance/production.ini instance_p_db_dump.sql
Run Code Online (Sandbox Code Playgroud)

B> 将转储的数据库文件复制到我的新主机(host_t)

C> 激活CKAN虚拟环境

. /usr/lib/ckan/ckan_t_instance/bin/activate
Run Code Online (Sandbox Code Playgroud)

D> 清理host_t中现有的CKAN数据库

paster db clean -c /etc/ckan/spatial_hub/development.ini
Run Code Online (Sandbox Code Playgroud)

E> 将转储的文件加载到 CKAN host_t 实例中。

paster db load -c /etc/ckan/spatial_hub/development.ini ~/instance_p_db_dump.sql
Run Code Online (Sandbox Code Playgroud)

F> 我收到以下错误:

/bin/sh: 1: Syntax error: "&&" unexpected
Traceback (most recent call last):
  File "/usr/lib/ckan/spatial_hub/bin/paster", line 11, in <module>
    sys.exit(run())
  File "/usr/lib/ckan/spatial_hub/local/lib/python2.7/site-packages/paste/script/command.py", line 102, in run
    invoke(command, command_name, options, args[1:])
  File "/usr/lib/ckan/spatial_hub/local/lib/python2.7/site-packages/paste/script/command.py", line 141, in invoke
    exit_code = runner.run(args)
  File …
Run Code Online (Sandbox Code Playgroud)

migration python-2.7 ckan

1
推荐指数
1
解决办法
1625
查看次数