使用 PostgreSQL 将 .sql 文件读入磁盘
Posted
技术标签:
【中文标题】使用 PostgreSQL 将 .sql 文件读入磁盘【英文标题】:Read .sql files to disk with PostgreSQL 【发布时间】:2017-02-06 00:25:27 【问题描述】:有没有办法读取存储在磁盘文件夹中的文件名并通过扩展名过滤? 这可以用 sql server 来做,但现在我需要用 postgresql 来做。 我等待你的建议。谢谢。
这与sql server一起使用:
EXECUTE master.dbo.xp_cmdshell 'dir /b "C:\Folder_Scripts\*.sql"'
【问题讨论】:
使用psql
有什么问题?
请说明你想要什么。该文件是您要执行的 SQL 脚本吗?文件是在客户端机器上还是在服务器机器上?您希望在哪个编程环境或使用哪个客户端程序来完成任务。
不,我尝试做的是从带有 pl / sql 的 Postgresql 中读取脚本文件 .sql,其中第一个脚本的名称必须与数据库中的函数进行比较,如果名称存在则应该重命名它然后执行它,但是它存在于数据库中只是应该执行它。如果我需要从客户端机器上运行它。 @Laurenz Albe
【参考方案1】:
您的描述和评论不太清楚,但我推测您想重命名磁盘上的 SQL 脚本文件,打开它们并从 PL/pgSQL 函数中执行包含的 SQL 语句。
这不是 PL/pgSQL 擅长的,但这里有你需要的工具:
有标准的SQL functions for reading files,它需要超级用户权限,所以你需要一个由超级用户拥有的函数,它以SECURITY DEFINER
运行。
adminpack
contrib 模块中有SQL functions to write files,同样需要超级用户权限。
您可以使用EXECUTE
statement 执行包含一条 SQL 命令(或多个 SQL 命令,以分号分隔)的字符串。
可以在SQL标准视图information_schema.routines
中找到数据库中定义的函数。
如果您需要进行大量字符串处理,您可能会发现 PL/pgSQL 有点笨拙。在这种情况下,请考虑使用PL/Perl。
【讨论】:
碰巧版本更新的时候,往往有50多个Store Procedure,手动做的过程很长。这个想法是在它存在的情况下生成一个备份,如果不直接运行它。我不明白你的建议:( 好吧,我不明白你的问题。让我们放弃吧;我们试过了。以上是关于使用 PostgreSQL 将 .sql 文件读入磁盘的主要内容,如果未能解决你的问题,请参考以下文章
Spark-SQL:如何将 TSV 或 CSV 文件读入数据框并应用自定义模式?