问题:使用PSQLpg_dump和pg_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) 我的目标是使用(a)CKAN API或(b)CKANAPI CLI或(c)贴纸(如果(c)可能)下载在私有数据集中作为资源保存的文件.
我试图使用(a)下载文件失败.例如,使用资源URL和/ urllib2或requests文件被下载但它已损坏(.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
我曾多次尝试将 CKAN 数据库加载到不同主机中的另一个 CKAN 实例中,但均未成功。
我的工作流程如下:
paster db dump -c /etc/ckan/ckan_p_instance/production.ini instance_p_db_dump.sql
Run Code Online (Sandbox Code Playgroud)
. /usr/lib/ckan/ckan_t_instance/bin/activate
Run Code Online (Sandbox Code Playgroud)
paster db clean -c /etc/ckan/spatial_hub/development.ini
Run Code Online (Sandbox Code Playgroud)
paster db load -c /etc/ckan/spatial_hub/development.ini ~/instance_p_db_dump.sql
Run Code Online (Sandbox Code Playgroud)
/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) ckan ×2
python-2.7 ×2
migration ×1
pg-dump ×1
pg-restore ×1
psql ×1
python ×1
subprocess ×1
ubuntu-14.04 ×1