PostgreSQL:在SQL语句中使用常量 [英] PostgreSQL: Use Constant in SQL Statement

查看:18
本文介绍了PostgreSQL:在SQL语句中使用常量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将二进制数据存储在一个Postgres数据库中,该数据库需要有很多行。为了不用相同的文本污染我的设置SQL文件,我尝试定义一个常量,然后在INSERT语句中使用该常量。我目前正在尝试类似的操作

-- my_data.sql

SET my_binary_file = 'x232120433a2f50726f6772616d2046696c...';

INSERT INTO public."MyTable" VALUES (1, :'my_binary_file')

然后使用psql -f my_data.sql

运行

但这只会导致

ERROR:  syntax error at or near ":"

我见过很多使用psql命令行完成的类似操作,但都不起作用。

推荐答案

您似乎将psql变量与其他形式混淆。明确地说,psql反斜杠命令不应该是SQL,如果您通过python脚本等运行您的脚本,那么它将不起作用,而只能使用psql。

所以--话虽如此,您可以很容易地做到这一点--您只需要正确地引用该值。Psql变量只是剪切和粘贴样式的宏,因此确切的文本将嵌入到查询字符串中。

set my_binary_file $$'x232120433a2f50726f6772616d2046696c...'$$
INSERT INTO "MyTable" VALUES (1, :my_binary_file);

注意,我们需要用双引号将变量的值引起来,因为它嵌入的位置没有引号。使用PostgreSQL的美元报价来实现这一点似乎是最容易的。还请注意,set上没有分号-这不是一条SQL语句,所有这些语句都需要放在一行中。

这篇关于PostgreSQL:在SQL语句中使用常量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆