定期运行Redshift查询

时间:2018-03-21 14:23:37

标签: amazon-web-services amazon-s3 hive db2 amazon-redshift

我已经开始研究Redshift了。它被定义为AWS中的“数据库”服务。根据我到目前为止所学到的,我们可以创建表并从S3或从Hive等外部源到Redhshift数据库(集群)中提取数据。此外,我们可以使用JDBC连接来查询这些表。

我的问题是 -

  1. Redshift群集中是否存在我们可以存储查询的地方(如Daily)?

  2. 我们可以将查询存储在S3位置并使用它来创建输出到另一个S3位置吗?

  3. 我们可以直接将带有二进制和字符串字段混合的DB2表卸载文件加载到Redshift,还是需要一个中间过程来将数据转换为CSV格式?

  4. 我做了一些谷歌搜索。如果您有资源链接,那将非常有帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

我在python中使用cursor函数使用psycopg2方法。示例代码如下。您必须在env_vars个文件中设置所有redshift凭据。 您可以使用cursor.execute设置查询。这里我提出了一个更新查询,因此您可以在此处设置查询(您可以设置多个查询)。之后,您必须将此python文件设置为crontab或任何其他自动运行应用程序,以便定期运行查询。

import psycopg2
import sys
import env_vars

conn_string = "dbname=%s  port=%s  user=%s  password=%s  host=%s " %(env_vars.RedshiftVariables.REDSHIFT_DW ,env_vars.RedshiftVariables.REDSHIFT_PORT ,env_vars.RedshiftVariables.REDSHIFT_USERNAME ,env_vars.RedshiftVariables.REDSHIFT_PASSWORD,env_vars.RedshiftVariables.REDSHIFT_HOST)
conn = psycopg2.connect(conn_string);
cursor = conn.cursor();
cursor.execute("""UPDATE database.demo_table SET  Device_id = '123' where Device = 'IPHONE' or Device = 'Apple'; """);

conn.commit();
conn.close();