postgresql 使用Python Subprocess调用raster2pgsql

n6lpvg4x  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(120)

我有一个命令,它使用Python的子进程模块中的Popen来调用postgis的raster 2 pgsql命令。这是我得到的:

curl_url = "https://....."
command = """raster2pgsql -F -I -C -s 26916 -t auto -R "/vsicurl/{}" table_name | database credentials...""".format(curl_url)

p1 = subprocess.Popen(command, shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE)
out, err = p1.communicate(b'...(This part is supposed to be the password for my database)', timeout=20)
print("out: {}, err: {}".format(out.decode('utf-8'), err))

我一直得到的错误是

out: , err: b'ERROR: Unable to read raster file: table_name\r\n'

这表明Popen完全跳过了我的“/vsicurl/url....”块,并试图打开我的table_name作为光栅文件。
当我对光栅curl_url进行更改时(例如to /url...或者只是/vsicurl/,这两个语法显然是不正确的),错误返回到正常状态并说

out: , err: b'ERROR: Unable to read raster file: /url...'

有人知道为什么会发生这种情况以及如何解决它吗?

wz1wpwve

wz1wpwve1#

你的curl_url实际上是一个文件URI而不是一个存储桶URL吗?同样的命令在shell中也能用吗?

相关问题