@@ -179,7 +179,7 @@ class UnloadFromSelect(Executable, ClauseElement):
179
179
''' Prepares a RedShift unload statement to drop a query to Amazon S3
180
180
http://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD_command_examples.html
181
181
'''
182
- def __init__ (self , select , bucket , access_key , secret_key ):
182
+ def __init__ (self , select , bucket , access_key , secret_key , parallel = 'on' ):
183
183
''' Initializes an UnloadFromSelect instance
184
184
185
185
Args:
@@ -188,22 +188,27 @@ def __init__(self, select, bucket, access_key, secret_key):
188
188
bucket: The Amazon S3 bucket where the result will be stored
189
189
access_key: The Amazon Access Key ID
190
190
secret_key: The Amazon Secret Access Key
191
+ parallel: If 'ON' the result will be written to multiple files. If
192
+ 'OFF' the result will write to one (1) file up to 6.2GB before
193
+ splitting
191
194
'''
192
195
self .select = select
193
196
self .bucket = bucket
194
197
self .access_key = access_key
195
198
self .secret_key = secret_key
199
+ self .parallel = parallel
196
200
197
201
198
202
@compiles (UnloadFromSelect )
199
203
def visit_unload_from_select (element , compiler , ** kw ):
200
204
''' Returns the actual sql query for the UnloadFromSelect class
201
205
'''
202
- return "unload ('%(query)s') to '%(bucket)s' credentials 'aws_access_key_id=%(access_key)s;aws_secret_access_key=%(secret_key)s' delimiter ',' addquotes allowoverwrite" % {
206
+ return "unload ('%(query)s') to '%(bucket)s' credentials 'aws_access_key_id=%(access_key)s;aws_secret_access_key=%(secret_key)s' delimiter ',' addquotes allowoverwrite parallel %(parallel)s " % {
203
207
'query' : compiler .process (element .select , unload_select = True , literal_binds = True ),
204
208
'bucket' : element .bucket ,
205
209
'access_key' : element .access_key ,
206
210
'secret_key' : element .secret_key ,
211
+ 'parallel' : element .parallel ,
207
212
}
208
213
209
214
@compiles (BindParameter )
0 commit comments