in functions/source/bootstrap_redshift/bootstrap_redshift.py [0:0]
def create_tables(connection):
is_processed = True
try:
cur = connection.cursor()
customers_table = """ CREATE TABLE IF NOT EXISTS customers(customernumber INTEGER NOT NULL ENCODE lzo DISTKEY,
customername VARCHAR(50) NOT NULL ENCODE lzo,contactlastname VARCHAR(50) NOT NULL ENCODE lzo, contactfirstname VARCHAR(50) NOT NULL ENCODE lzo,
phone VARCHAR(50) NOT NULL ENCODE lzo, addressline1 VARCHAR(50) NOT NULL ENCODE lzo, addressline2 VARCHAR(50) ENCODE lzo,
city VARCHAR(50) NOT NULL ENCODE lzo,state VARCHAR(50) ENCODE lzo, postalcode VARCHAR(15) ENCODE lzo,
country VARCHAR(50) NOT NULL ENCODE lzo,salesrepemployeenumber INTEGER ENCODE lzo,
creditlimit NUMERIC(10, 2) ENCODE lzo) SORTKEY (customernumber); """
cur.execute(customers_table)
employees_table = """ CREATE TABLE IF NOT EXISTS employees(employeenumber INTEGER NOT NULL ENCODE lzo DISTKEY,lastname VARCHAR(50) NOT NULL ENCODE lzo,
firstname VARCHAR(50) NOT NULL ENCODE lzo,extension VARCHAR(10) NOT NULL ENCODE lzo,email VARCHAR(100) NOT NULL ENCODE lzo,
officecode VARCHAR(10) NOT NULL ENCODE lzo,reportsto INTEGER ENCODE lzo,jobtitle VARCHAR(50) NOT NULL ENCODE lzo) SORTKEY (employeenumber); """
cur.execute(employees_table)
offices_table = """ CREATE TABLE IF NOT EXISTS offices(officecode VARCHAR(10) NOT NULL ENCODE lzo DISTKEY,city VARCHAR(50) NOT NULL ENCODE lzo,
phone VARCHAR(50) NOT NULL ENCODE lzo,addressline1 VARCHAR(50) NOT NULL ENCODE lzo,addressline2 VARCHAR(50) ENCODE lzo,state VARCHAR(50) ENCODE lzo,
country VARCHAR(50) NOT NULL ENCODE lzo,postalcode VARCHAR(15) NOT NULL ENCODE lzo,territory VARCHAR(10) NOT NULL ENCODE lzo) SORTKEY
(officecode); """
cur.execute(offices_table)
order_details_table = """ CREATE TABLE IF NOT EXISTS orderdetails(ordernumber INTEGER NOT NULL ENCODE lzo DISTKEY,productcode VARCHAR(15) NOT NULL ENCODE lzo,
quantityordered INTEGER NOT NULL ENCODE lzo,priceeach NUMERIC(10, 2) NOT NULL ENCODE lzo,orderlinenumber SMALLINT NOT NULL ENCODE lzo
) SORTKEY(ordernumber,productcode); """
cur.execute(order_details_table)
orders_table = """ CREATE TABLE IF NOT EXISTS orders(ordernumber INTEGER NOT NULL ENCODE lzo DISTKEY,
orderdate DATE NOT NULL ENCODE lzo,requireddate DATE NOT NULL ENCODE lzo,shippeddate DATE ENCODE lzo,status VARCHAR(15) NOT NULL ENCODE lzo,
comments VARCHAR(256) ENCODE lzo,customernumber INTEGER NOT NULL ENCODE lzo,current_year VARCHAR(5) ENCODE lzo ) SORTKEY(ordernumber); """
cur.execute(orders_table)
payments_table = """ CREATE TABLE IF NOT EXISTS payments(
customernumber INTEGER NOT NULL ENCODE lzo DISTKEY, checknumber VARCHAR(50) NOT NULL ENCODE lzo,
paymentdate DATE NOT NULL ENCODE lzo,amount NUMERIC(10, 2) NOT NULL ENCODE lzo ) SORTKEY(customernumber,checknumber); """
cur.execute(payments_table)
product_lines_table = """ CREATE TABLE IF NOT EXISTS productlines(productline VARCHAR(50) NOT NULL ENCODE lzo DISTKEY,textdescription VARCHAR(4000) ENCODE lzo,
htmldescription VARCHAR(256) ENCODE lzo,image VARCHAR(256) ENCODE lzo) SORTKEY(productline); """
cur.execute(product_lines_table)
products_table = """ CREATE TABLE IF NOT EXISTS products(productcode VARCHAR(15) NOT NULL ENCODE lzo DISTKEY,productname VARCHAR(70) NOT NULL ENCODE lzo,productline VARCHAR(50) NOT NULL ENCODE lzo,productscale VARCHAR(100) NOT NULL ENCODE lzo,productvendor VARCHAR(50) NOT NULL ENCODE lzo,productdescription VARCHAR(65535) NOT NULL ENCODE lzo,
quantityinstock SMALLINT NOT NULL ENCODE lzo,buyprice NUMERIC(10, 2) NOT NULL ENCODE lzo,msrp NUMERIC(10, 2) NOT NULL ENCODE lzo) SORTKEY(productcode); """
cur.execute(products_table)
connection.commit()
cur.close()
except Exception as ex:
is_processed = False
logger.error('Failed to create tables' + str(ex))
return is_processed