代码之家  ›  专栏  ›  技术社区  ›  Jaygovind Sahu

定期运行红移查询

  •  2
  • Jaygovind Sahu  · 技术社区  · 7 年前

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

    我的问题是-

    1. 红移集群中是否有一个地方可以存储查询并定期运行(如每天)?

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

    3. 我们可以加载一个包含二进制和字符串字段的DB2表卸载文件来直接红移,还是需要一个中间过程来将数据转换成CSV之类的格式?

    我在谷歌上搜索了一下。如果你有资源链接,那将非常有用。非常感谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sahil Desai    7 年前

    我用过 cursor 方法使用 psycopg2 python中的函数。下面给出了示例代码。您必须在中设置所有红移凭据 env_vars 文件。 您可以使用设置查询 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();