import psycopg2 import time import sys import datetime from datetime import date datetime_object = datetime.datetime.now() print ("Start TimeStamp") print ("---------------") print(datetime_object) print("") #Progress Bar Function def progressbar(it, prefix="", size=60, file=sys.stdout): count = len(it) def show(j): x = int(size*j/count) file.write("%s[%s%s] %i/%i\r" % (prefix, "#"*x, "."*(size-x), j, count)) file.flush() show(0) for i, item in enumerate(it): yield item show(i+1) file.write("\n") file.flush() #Obtaining the connection to RedShift con=psycopg2.connect(dbname= 'dev', host='redshift.amazonaws.com', port= '5439', user= 'awsuser', password= '*****') #Copy Command as Variable copy_command="copy users from 's3://redshift-test-bucket/allusers_pipe.txt' credentials 'aws_iam_role=arn:aws:iam::775088:role/REDSHIFTROLE' delimiter '|' region 'ap-southeast-2';" #Unload Command as Variable unload_command="unload ('select * from users') to 's3://redshift-test-bucket/users_"+str(datetime.datetime.now())+".csv' credentials 'aws_iam_role=arn:aws:iam::7755088:role/REDSHIFTROLE' delimiter '|' region 'ap-southeast-2';" #Opening a cursor and run copy query cur = con.cursor() cur.execute("truncate table users;") cur.execute(copy_command) con.commit() #Display Progress Bar and Put a sleep condition in seconds to make the program wait for i in progressbar(range(100), "Copying Data into Redshift: ", 10): time.sleep(0.1) # any calculation you need print("") #Display Progress Bar and Put a sleep condition in seconds to make the program wait for i in progressbar(range(600), "Unloading Data from Redshift to S3: ", 60): time.sleep(0.1) # any calculation you need print("") #Opening a cursor and run unload query cur.execute(unload_command) #Close the cursor and the connection cur.close() con.close() datetime_object_2 = datetime.datetime.now() print ("End TimeStamp") print ("-------------") print(datetime_object_2) print("")