首页 文章

在Postgresql中复制:解释为相对路径的绝对路径

提问于
浏览
2

我在Django应用程序中运行此语句:

c = connections['default'].cursor()
    query="copy (select * from analysis.\"{0}\") to STDOUT DELIMITER ',' CSV HEADER;".format(view_name)
            with open(csvFile,'w') as f:
                c.copy_expert(query,f)
            f.close()

它不会创建正确的csv文件 . 某些值似乎位于错误的列中 . 我试图通过在POSTGRESQL中运行它来测试SQL语句:

copy (select * from analysis."S03_2005_activity_140807_153431_with_geom") to 'C:/djangoProjects/web_output/csvfiles/S03_2005_activity_140807_153431_with_geom.csv' DELIMITER ',' CSV HEADER;

它给了我:“错误:COPY不允许相对路径存档” . 我调查了这个问题,它似乎通常是两个问题之一:1 . 混淆''和'/' . 我的斜杠应该是正确的 . 2.服务器位于不同的计算机上 . 我认为这可能是我的问题,因为数据库位于外部计算机上,但我在Postgresql中有连接 . 它也是从Django运行所以我不确定为什么它不能从PG Admin工作 .

1 回答

  • 5

    如果要从本地计算机存储数据/获取数据并与另一台远程计算机上的Postgres服务器通信,则不能简单地使用COPY .

    尝试元命令\copy in psql . 它是SQL COPY 命令的包装器并使用本地文件 .

    您的 filename 应该在Windows机器上工作,但Postgres将其解释为服务器上的本地文件名,这可能是Unix衍生物 . 那里的文件名必须以'/'开头 .

相关问题