【问题标题】:How to execute sql file on Redshift如何在 Redshift 上执行 sql 文件
【发布时间】:2019-04-27 23:29:37
【问题描述】:

我有一个 SQL 文件,其中包含很少的临时创建脚本和很少的插入脚本。

我们想使用 AWS 服务在 Redshift 上执行这个 SQL 文件。

【问题讨论】:

标签: aws-lambda amazon-redshift aws-glue


【解决方案1】:

AWS 为 Redshift 提供的 SQL 客户端可以作为起点。启用对编辑器的访问AmazonRedshiftQueryEditor 是要走的路AWS Query Editor 对于高级 IDE 需求,可以参考IDE。最好的!

【讨论】:

  • 我发现查询编辑器使用起来真的很痛苦。他们为每个 SQL 语句创建一个选项卡,因此如果您有很多语句,除了单击每个选项卡外,没有办法判断一个语句是否失败。
【解决方案2】:

您可以使用在 EC2 实例(或任何其他服务器)上运行的简单 Python 脚本来建立到 Redshift 的 JDBC 连接(使用 psycopg2),然后在您的 .SQL 文件中执行查询。

【讨论】:

    【解决方案3】:

    我发现您需要为此使用 Python,因为 Redshift 基于 Postgres 8。您可以从 Postgres 源代码为 8 构建一个 psql 客户端,它也可以工作。

    下面是我用的一个py例子:

    要求:

    您的文件的代码,例如 mypythonfile.py

    import sys
    import psycopg2
    
    con=psycopg2.connect("dbname=dev host=" + sys.argv[1] + " port=5439 user=redshift password=" + sys.argv[2])
    con.set_isolation_level(0)
    cur = con.cursor()
    cur.execute("create database myedw with owner redshift")
    cur.close()
    con.close()
    print("Database created")
    
    con=psycopg2.connect("dbname=myedw host=" + sys.argv[1] + " port=5439 user=redshift password=" + sys.argv[2])
    con.set_isolation_level(0)
    cur = con.cursor()
    cur.execute(open("edw-schemas.sql", "r").read())
    con.commit()
    cur.execute(open("edw-master.sql", "r").read())
    print("EDW structure created")
    print("Done")
    

    然后您可以按如下方式执行脚本:

    python mypythonfile.py {redshift host} {password}
    

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 1970-01-01
      • 2018-09-07
      • 2014-02-09
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2017-07-13
      相关资源
      最近更新 更多