Python从MS SQL查询并高效加载到PostgreSQL

时间:2016-10-05 14:22:46

标签: python sqlalchemy psycopg2

每天从MS SQL到PostgreSQL传输相当大量的数据(2mil +行)的最有效方法是什么?

现在我:

  • 使用SQLAlchemy
  • 连接到数据库
  • 使用pandas(WHERE report_date =昨天)
  • 读取数据
  • 然后我在熊猫中添加了一些列和内容,但我需要再这样做了。我可以直接抓取数据并直接加载而无需进行修改
  • 然后我将数据帧写入CSV文件并使用psycopg2批量插入

代码示例:

for date_range中的query_date:     query =' SELECT * FROM {} WHERE row_date =%s;'     df = pd.read_sql_query(query.format(table_name),engine,params = {query_date})

def process_file(conn, table_name, file_object):
   fake_conn = pg_engine.raw_connection()
   fake_cur = fake_conn.cursor()
   fake_cur.copy_expert(sql='''COPY %s FROM STDIN WITH CSV HEADER''' % table_name, file=file_object)
   fake_conn.commit()
   fake_cur.close()


df.to_csv('../raw/temp_' + table_name + ext, index=False)
df = open('../raw/temp_' + table_name + ext)
process_file(conn=pg_engine, table_name=table_name, file_object=df)

0 个答案:

没有答案