0

我刚刚在 Amazon AWS 上创建了一个帐户,我将使用 DATAPIPELINE 来安排我的查询。是否可以使用数据管道的 SQLACTIVITY 从 .sql 文件运行多个复杂的 SQL 查询?

我的总体目标是使用数据管道中的 sql 查询处理来自 REDSHIFT/s3 的原始数据并将其保存到 s3。这是可行的方法吗?

在这方面的任何帮助将不胜感激。

4

3 回答 3

0

是的,如果您计划将数据从 Redshift 移动到 S3,您需要执行以下UNLOAD命令:http: //docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html

于 2015-06-30T18:45:40.900 回答
0

sql 查询的输入将是单个数据节点,输出将是单个数据文件。数据管道仅提供一个“选择查询”字段,您将在其中编写提取/转换查询。我不认为有多个查询文件的任何用例。

但是,如果您想让您的管道可配置,您可以通过在管道定义 JSON 中添加“参数”和值对象来使您的管道可配置。

{
   "objects":[
  {
     "selectQuery":"#{myRdsSelectQuery}"
  }
  ],
  "parameters":[
  { 
     "description":"myRdsSelectQuery",
     "id":"myRdsSelectQuery",
     "type":"String"
  }
  ],
   "values":{
      "myRdsSelectQuery":"Select Query"
 }
}

如果要执行和调度多个 sql 脚本,可以使用 ShellCommandActivity。

于 2017-06-23T13:14:38.730 回答
0

我设法使用以下 AWS 数据管道配置执行具有多个插入语句的脚本:

    {
      "id": "ExecuteSqlScript",
      "name": "ExecuteSqlScript",
      "type": "SqlActivity",
      "scriptUri": "s3://mybucket/inserts.sql",
      "database": { "ref": "rds_mysql" },
      "runsOn": { "ref": "Ec2Instance" }
    }, {
      "id": "rds_mysql",
      "name": "rds_mysql",
      "type": "JdbcDatabase",
      "username": "#{myUsername}",
      "*password": "#{*myPassword}",
      "connectionString" : "#{myConnStr}",
      "jdbcDriverClass": "com.mysql.jdbc.Driver",
      "jdbcProperties": ["allowMultiQueries=true","zeroDateTimeBehavior=convertToNull"]
    },

重要的是允许 MySql 驱动程序执行多个查询,allowMultiQueries=true并且脚本 s3 路径由提供scriptUri

于 2018-06-12T19:10:53.867 回答