35
35
def export_table (bigquery , cloud_storage_path ,
36
36
project_id , dataset_id , table_id ,
37
37
export_format = "CSV" ,
38
- num_retries = 5 ):
38
+ num_retries = 5 ,
39
+ compression = "NONE" ):
39
40
"""
40
41
Starts an export job
41
42
@@ -47,6 +48,8 @@ def export_table(bigquery, cloud_storage_path,
47
48
e.g. gs://mybucket/myfolder/
48
49
export_format: format to export in;
49
50
"CSV", "NEWLINE_DELIMITED_JSON", or "AVRO".
51
+ compression: format to compress results with,
52
+ "NONE" (default) or "GZIP".
50
53
51
54
Returns: an extract job resource representing the
52
55
job, see https://cloud.google.com/bigquery/docs/reference/v2/jobs
@@ -66,7 +69,8 @@ def export_table(bigquery, cloud_storage_path,
66
69
'tableId' : table_id ,
67
70
},
68
71
'destinationUris' : [cloud_storage_path ],
69
- 'destinationFormat' : export_format
72
+ 'destinationFormat' : export_format ,
73
+ 'compression' : compression
70
74
}
71
75
}
72
76
}
@@ -101,7 +105,7 @@ def poll_job(bigquery, job):
101
105
102
106
# [START run]
103
107
def main (cloud_storage_path , project_id , dataset_id , table_id ,
104
- num_retries , interval , export_format = "CSV" ):
108
+ num_retries , interval , export_format = "CSV" , compression = "NONE" ):
105
109
# [START build_service]
106
110
# Grab the application's default credentials from the environment.
107
111
credentials = GoogleCredentials .get_application_default ()
@@ -117,7 +121,8 @@ def main(cloud_storage_path, project_id, dataset_id, table_id,
117
121
dataset_id ,
118
122
table_id ,
119
123
num_retries = num_retries ,
120
- export_format = export_format )
124
+ export_format = export_format ,
125
+ compression = compression )
121
126
poll_job (bigquery , job )
122
127
# [END run]
123
128
@@ -144,6 +149,11 @@ def main(cloud_storage_path, project_id, dataset_id, table_id,
144
149
help = 'Number of times to retry in case of 500 error.' ,
145
150
type = int ,
146
151
default = 5 )
152
+ parser .add_argument (
153
+ '-z' , '--gzip' ,
154
+ help = 'compress resultset with gzip' ,
155
+ action = 'store_true' ,
156
+ default = False )
147
157
148
158
args = parser .parse_args ()
149
159
@@ -153,5 +163,6 @@ def main(cloud_storage_path, project_id, dataset_id, table_id,
153
163
args .dataset_id ,
154
164
args .table_id ,
155
165
args .num_retries ,
156
- args .poll_interval )
166
+ args .poll_interval ,
167
+ compression = "GZIP" if args .gzip else "NONE" )
157
168
# [END main]
0 commit comments