首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用红移上的函数插入表

如何使用红移上的函数插入表
EN

Stack Overflow用户
提问于 2017-09-06 11:51:04
回答 2查看 2K关注 0票数 1

我正在尝试创建一个简单的函数,它获取3个参数并将它们插入到表中(作为一行)。现在我知道redshift不支持过程,而是启用python函数。

我有一个python函数,当在redshift外部运行时,它就完成了任务。问题是如何将其实现到redhsift中,所以当我从查询中调用函数时,它执行相同的操作。

下面是我使用的python代码(它在红移之外工作得很好):

代码语言:javascript
复制
import psycopg2

def insert_tab(arg1, arg2, arg3):
# Create connection to redshift
try:
    con = psycopg2.connect("dbname= 'dev' 
    host='something.redshift.amazonaws.com' "
                            "port= '5439' user= 'user' password= 'password'")
    con.autocommit = True
    cur = con.cursor()
except:
    print("Cannot connect to Database")

sql_statementy= "insert into table(a,b,c) values (%s, %s, %s)"
try:
    cur.execute(sql_statementy, (arg1, arg2, arg3))
except:
    print("insert into failed")
return

我运行python

代码语言:javascript
复制
import write_table
write_table.insert_tab('a','b','c')

如何在redshift上实现这一点,以便调用类似的函数

代码语言:javascript
复制
select insert_tab('a','b','d') 

所以它会像程序一样工作吗?

EN

回答 2

Stack Overflow用户

发布于 2017-09-06 12:42:13

没有办法这样做,因为UDF是用Python编写的,用来处理标量值、数组或对象,就像普通的Python一样。不能在Redshift中编写SQL函数。虽然对于习惯于在Postgres和其他支持存储过程的关系数据库中工作的人来说,这似乎很奇怪,但select insert_tab('a','b','d')是一个对分析数据库没有任何意义的OLTP环境的包装器。

票数 0
EN

Stack Overflow用户

发布于 2017-09-30 09:18:20

实际上可以用python或sql编写UDF(截至上周)(请参阅http://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html )。

然而,也有某些限制,包括他们不能读或写。实际上,他们所能做的就是返回一个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46074489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档