如何将一个csv文件从url复制到PostgreSQL

8

有没有办法使用copy命令进行批量数据导入,并从URL读取数据。例如,copy命令的语法如下:

COPY sample_table
FROM 'C:\tmp\sample_data.csv' DELIMITER ',' CSV HEADER;

我想要的不是提供本地路径,而是提供一个URL链接。有什么方法吗?

不,COPY 不支持这个。但是你可以使用过程化语言(如 plpython 或 plperl)先下载文件。 - Tom-db
是的,你说得对。只需使用Python或PHP下载文件,然后进行复制即可。谢谢。 - Stathis Andronikos
2个回答

19

只要您有适当的命令行工具可用,这就非常简单:

COPY sample_table FROM PROGRAM 'curl "http://www.example.com/file.csv"'

由于您似乎使用的是Windows系统,我认为您需要自己安装curlwget。 这里有一个在Windows上使用wget的示例这里可能会有所帮助。


0
我的解决方案是:
cat $file |
    tail -$numberLine |
    sed 's/ / ,/g' |
    psql -q -d $dataBaseName -c "COPY tableName FROM STDIN DELIMITER ','"

sedpsql之间插入awk以添加缺失的列。如果您已经知道在缺失的列中要放什么,则此方法非常有趣。

awk '{print $0" , "'info_about_missing_column'"\n"}'

我已经完成了这个任务,而且它的速度比INSERT更快。


能否删除我的帖子,因为它与所提出的问题不符?谢谢。 - Gromph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接