:mod:`airflow.contrib.operators.sql_to_gcs`
===========================================

.. py:module:: airflow.contrib.operators.sql_to_gcs

.. autoapi-nested-parse::

   Base operator for SQL to GCS operators.



Module Contents
---------------

.. data:: PY3
   

   

.. py:class:: BaseSQLToGoogleCloudStorageOperator(sql, bucket, filename, schema_filename=None, approx_max_file_size_bytes=1900000000, export_format='json', field_delimiter=',', gzip=False, schema=None, parameters=None, google_cloud_storage_conn_id='google_cloud_default', delegate_to=None, *args, **kwargs)

   Bases: :class:`airflow.models.BaseOperator`

   :param sql: The SQL to execute.
   :type sql: str
   :param bucket: The bucket to upload to.
   :type bucket: str
   :param filename: The filename to use as the object name when uploading
       to Google Cloud Storage. A {} should be specified in the filename
       to allow the operator to inject file numbers in cases where the
       file is split due to size.
   :type filename: str
   :param schema_filename: If set, the filename to use as the object name
       when uploading a .json file containing the BigQuery schema fields
       for the table that was dumped from the database.
   :type schema_filename: str
   :param approx_max_file_size_bytes: This operator supports the ability
       to split large table dumps into multiple files (see notes in the
       filename param docs above). This param allows developers to specify the
       file size of the splits. Check https://cloud.google.com/storage/quotas
       to see the maximum allowed file size for a single object.
   :type approx_max_file_size_bytes: long
   :param export_format: Desired format of files to be exported.
   :type export_format: str
   :param field_delimiter: The delimiter to be used for CSV files.
   :type field_delimiter: str
   :param gzip: Option to compress file for upload (does not apply to schemas).
   :type gzip: bool
   :param schema: The schema to use, if any. Should be a list of dict or
       a str. Pass a string if using Jinja template, otherwise, pass a list of
       dict. Examples could be seen: https://cloud.google.com/bigquery/docs
       /schemas#specifying_a_json_schema_file
   :type schema: str or list
   :param google_cloud_storage_conn_id: Reference to a specific Google
       cloud storage hook.
   :type google_cloud_storage_conn_id: str
   :param delegate_to: The account to impersonate, if any. For this to
       work, the service account making the request must have domain-wide
       delegation enabled.
   :param parameters: a parameters dict that is substituted at query runtime.
   :type parameters: dict

   .. attribute:: template_fields
      :annotation: = ['sql', 'bucket', 'filename', 'schema_filename', 'schema', 'parameters']

      

   .. attribute:: template_ext
      :annotation: = ['.sql']

      

   .. attribute:: ui_color
      :annotation: = #a0e08c

      

   
   .. method:: execute(self, context)



   
   .. method:: convert_types(self, schema, col_type_dict, row)

      Convert values from DBAPI to output-friendly formats.



   
   .. method:: _write_local_data_files(self, cursor)

      Takes a cursor, and writes results to a local file.

      :return: A dictionary where keys are filenames to be used as object
          names in GCS, and values are file handles to local files that
          contain the data for the GCS objects.



   
   .. method:: _configure_csv_file(self, file_handle, schema)

      Configure a csv writer with the file_handle and write schema
      as headers for the new file.



   
   .. method:: query(self)

      Execute DBAPI query.



   
   .. method:: field_to_bigquery(self, field)

      Convert a DBAPI field to BigQuery schema format.



   
   .. method:: convert_type(self, value, schema_type)

      Convert a value from DBAPI to output-friendly formats.



   
   .. method:: _get_col_type_dict(self)

      Return a dict of column name and column type based on self.schema if not None.



   
   .. method:: _write_local_schema_file(self, cursor)

      Takes a cursor, and writes the BigQuery schema for the results to a
      local file system.

      :return: A dictionary where key is a filename to be used as an object
          name in GCS, and values are file handles to local files that
          contains the BigQuery schema fields in .json format.



   
   .. method:: _upload_to_gcs(self, files_to_upload)

      Upload all of the file splits (and optionally the schema .json file) to
      Google cloud storage.




