PostgreSQL:从文件系统加载文件而不插入表
我该如何做这样的事情?
在 mysql 中我这样做:
SELECT LOAD_FILE('/path/to/file');
postgres 怎么样?不使用psql的\copy
命令?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我该如何做这样的事情?
在 mysql 中我这样做:
SELECT LOAD_FILE('/path/to/file');
postgres 怎么样?不使用psql的\copy
命令?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
这取决于你到底想做什么。
您有COPY用于将结构化数据读入(临时) 表。
注意,这是SQL命令,与psql的\copy命令类似,但不一样!
而且还有pg_read_file() 用于读取任何文本文件。
编辑 - 一个基本示例:
只有超级用户才能使用此功能。小心不要打开安全漏洞。您可以使用
SECURITY DEFINER
、REVOKE FROM
公共角色和GRANT TO
所选角色。如果安全是一个问题,请阅读提供的链接中的本段:pg_read_file()
您只能从日志文件目录和数据库目录中读取。在Linux上,您可以创建一个到数据目录(在安全位置)的符号链接,如下所示:然后像这样调用:
输出:
That depends what you want to do exactly.
You have COPY for reading structured data into (temporary) tables.
Note that this is the SQL command, which is similar, but not the same as the \copy command of psql!
And there is pg_read_file() for reading in any text file.
Edit - a basic example:
Only superusers can use this function. Be careful not to open security holes. You could create a function with
SECURITY DEFINER
,REVOKE FROM
public andGRANT TO
selected roles. If security is an issue read this paragraph at the provided link:pg_read_file()
you can only read from the logfile dir and the database dir. On Linux you could create a symlink to a data dir (at a safe location) like this:Then call like this:
Output: