Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. import psycopg2
  2. import argparse
  3.  
  4. def copy_table( connectionStringSrc, connectionStringDst, table_name, verbose=False, condition="" ):
  5. with psycopg2.connect(connectionStringSrc) as connSrc:
  6. with psycopg2.connect(connectionStringDst) as connDst:
  7. query = "SELECT * FROM {} {};".format(table_name,condition)
  8. with connSrc.cursor() as curSrc:
  9. curSrc.execute( query )
  10. print "Source number of rows =", curSrc.rowcount
  11. with connDst.cursor() as curDst:
  12. for row in curSrc:
  13. # generate %s x columns
  14. query_columns = ','.join( [desc[0] for desc in curSrc.description] )
  15. query_values = ','.join( '%s' for x in range(len(curSrc.description)) )
  16. query = "INSERT INTO {} ({}) VALUES ({});".format( table_name, query_columns, query_values )
  17. param = [ item for item in row ]
  18. if verbose:
  19. print curDst.mogrify(query,param )
  20. curDst.execute( query, param )
  21.  
  22. if __name__ == '__main__':
  23. parser = argparse.ArgumentParser()
  24. parser.add_argument("cs_src", type=str,
  25. help='connection string source like: "host=localhost port=5432 user=admin password=mypwd dbname=mydbname"')
  26. parser.add_argument("cs_dst", type=str,
  27. help='connection string destination like: "host=localhost port=5432 user=admin password=mypwd dbname=mydbname"')
  28.  
  29. parser.add_argument("tablename", type=str,
  30. help='Table name')
  31.  
  32. parser.add_argument("-w", "--where", type=str,
  33. help='append sql where query "WHERE id = 123"')
  34.  
  35. parser.add_argument("-v", "--verbose",
  36. help='increase output verbosity', action="store_true")
  37.  
  38. args = parser.parse_args()
  39. copy_table( args.cs_src, args.cs_dst, args.tablename, args.verbose, args.where )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement