Выдает ошибку при повторной попытке запустить код с обновленной таблицей на сервере sql. - PullRequest
0 голосов
/ 04 августа 2020

# Этот код копирует все данные из одной таблицы на сервере sql в postgres. # но работает только один раз. проверьте

import pandas as pd
import psycopg2
import io
from sqlalchemy import create_engine
server='NEW'
db1 = create_engine('mssql+pyodbc://@' + server + '/' + 'testdb' + '?driver=SQL+Server')
db2 = psycopg2.connect(database="mockdb", user="postgres", password="code123", host="127.0.0.1", port="5432")

sql_query = "SELECT * FROM employees"

for chunk in pd.read_sql_query(sql_query, db1, chunksize = 500000):
  chunk.columns = map(str.lower, chunk.columns)

  # Prepare data
  output = io.StringIO()
  chunk.to_csv(output, sep='\t', header=False, encoding="utf8", index=False)
  output.seek(0)
  

  # Inserting  data into postgres

  cursor = db2.cursor()
  cursor.copy_from(output, 'sample_table', sep='\t', null='')
  db2.commit()
  cursor.close()
...