运行 SQL 使用 AMAZON 数据管道进行多个复杂查询的脚本文件
Run SQL script file with multiple complex queries using AMAZON datapipeline
我刚刚在 Amazon AWS 上创建了一个帐户,我将使用 DATAPIPELINE 来安排我的查询。是否可以使用数据管道的 SQLACTIVITY 从 .sql 文件中 运行 多个复杂的 SQL 查询?
我的总体 objective 是使用来自数据管道的 sql 查询处理来自 REDSHIFT/s3 的原始数据并将其保存到 s3。这是可行的方法吗?
在这方面的任何帮助将不胜感激。
是的,如果您计划将数据从 Redshift 移动到 S3,则需要执行此处的 UNLOAD
命令:http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html
您的 sql 查询的输入将是单个数据节点,输出将是单个数据文件。数据管道仅提供一个 "Select query" 字段,您可以在其中编写 extraction/transformation 查询。我认为没有多个查询文件的用例。
但是,如果您想让管道可配置,可以通过在管道定义中添加 "parameters" 和值对象来使管道可配置 JSON。
{
"objects":[
{
"selectQuery":"#{myRdsSelectQuery}"
}
],
"parameters":[
{
"description":"myRdsSelectQuery",
"id":"myRdsSelectQuery",
"type":"String"
}
],
"values":{
"myRdsSelectQuery":"Select Query"
}
}
如果要执行和调度多个 sql 脚本,可以使用 ShellCommandActivity。
我使用以下 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
提供
我刚刚在 Amazon AWS 上创建了一个帐户,我将使用 DATAPIPELINE 来安排我的查询。是否可以使用数据管道的 SQLACTIVITY 从 .sql 文件中 运行 多个复杂的 SQL 查询?
我的总体 objective 是使用来自数据管道的 sql 查询处理来自 REDSHIFT/s3 的原始数据并将其保存到 s3。这是可行的方法吗?
在这方面的任何帮助将不胜感激。
是的,如果您计划将数据从 Redshift 移动到 S3,则需要执行此处的 UNLOAD
命令:http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html
您的 sql 查询的输入将是单个数据节点,输出将是单个数据文件。数据管道仅提供一个 "Select query" 字段,您可以在其中编写 extraction/transformation 查询。我认为没有多个查询文件的用例。
但是,如果您想让管道可配置,可以通过在管道定义中添加 "parameters" 和值对象来使管道可配置 JSON。
{
"objects":[
{
"selectQuery":"#{myRdsSelectQuery}"
}
],
"parameters":[
{
"description":"myRdsSelectQuery",
"id":"myRdsSelectQuery",
"type":"String"
}
],
"values":{
"myRdsSelectQuery":"Select Query"
}
}
如果要执行和调度多个 sql 脚本,可以使用 ShellCommandActivity。
我使用以下 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