def setUp(self): self.temp_schema = TEMP_SCHEMA self.rs = Redshift() self.tbl = Table([['ID', 'Name'], [1, 'Jim'], [2, 'John'], [3, 'Sarah']]) # Create a schema, create a table, create a view setup_sql = f""" drop schema if exists {self.temp_schema} cascade; create schema {self.temp_schema}; """ other_sql = f""" create table {self.temp_schema}.test (id int,name varchar(5)); create view {self.temp_schema}.test_view as ( select * from {self.temp_schema}.test ); """ self.rs.query(setup_sql) self.rs.query(other_sql) self.s3 = S3() self.temp_s3_bucket = os.environ['S3_TEMP_BUCKET'] self.temp_s3_prefix = 'test/'
def to_redshift(self, table_name, username=None, password=None, host=None, db=None, port=None, **copy_args): """ Write a table to a Redshift database. Note, this requires you to pass AWS S3 credentials or store them as environmental variables. Args: table_name: str The table name and schema (``my_schema.my_table``) to point the file. username: str Required if env variable ``REDSHIFT_USERNAME`` not populated password: str Required if env variable ``REDSHIFT_PASSWORD`` not populated host: str Required if env variable ``REDSHIFT_HOST`` not populated db: str Required if env variable ``REDSHIFT_DB`` not populated port: int Required if env variable ``REDSHIFT_PORT`` not populated. Port 5439 is typical. \**copy_args: kwargs See :func:`~parsons.databases.Redshift.copy`` for options. Returns: ``None`` """ # noqa: W605 from parsons.databases.redshift import Redshift rs = Redshift(username=username, password=password, host=host, db=db, port=port) rs.copy(self, table_name, **copy_args)
def from_redshift(cls, sql, username=None, password=None, host=None, db=None, port=None): """ Create a ``parsons table`` from a Redshift query. To pull an entire Redshift table, use a query like ``SELECT * FROM tablename``. `Args:` sql: str A valid SQL statement username: str Required if env variable ``REDSHIFT_USERNAME`` not populated password: str Required if env variable ``REDSHIFT_PASSWORD`` not populated host: str Required if env variable ``REDSHIFT_HOST`` not populated db: str Required if env variable ``REDSHIFT_DB`` not populated port: int Required if env variable ``REDSHIFT_PORT`` not populated. Port 5439 is typical. `Returns:` Parsons Table See :ref:`parsons-table` for output options. """ from parsons.databases.redshift import Redshift rs = Redshift(username=username, password=password, host=host, db=db, port=port) return rs.query(sql)
def setUp(self): self.rs = Redshift(username='******', password='******', host='test', db='test', port=123) self.tbl = Table([['ID', 'Name'], [1, 'Jim'], [2, 'John'], [3, 'Sarah']]) self.tbl2 = Table([ ["c1", "c2", "c3", "c4", "c5", "c6", "c7"], ["a", "", 1, "NA", 1.4, 1, 2], ["b", "", 2, "NA", 1.4, 1, 2], ["c", "", 3.4, "NA", "", "", "a"], ["d", "", 5, "NA", 1.4, 1, 2], ["e", "", 6, "NA", 1.4, 1, 2], ["f", "", 7.8, "NA", 1.4, 1, 2], ["g", "", 9, "NA", 1.4, 1, 2], ]) self.mapping = self.rs.generate_data_types(self.tbl) self.rs.DO_PARSE_BOOLS = True self.mapping2 = self.rs.generate_data_types(self.tbl2) self.rs.DO_PARSE_BOOLS = False self.mapping3 = self.rs.generate_data_types(self.tbl2)
def setUp(self): self.rs = Redshift(username='******', password='******', host='test', db='test', port=123) self.tbl = Table([['ID', 'Name'], [1, 'Jim'], [2, 'John'], [3, 'Sarah']]) self.mapping = self.rs.generate_data_types(self.tbl)