使用Python代码将整个表从MSSQL复制到PostgreSQL

时间:2018-10-22 14:51:08

标签: python sql-server postgresql

我正在尝试从MSSQL数据库的表中选择到PostgreSQL数据库的另一个表中。我很早以前就读过《 The_Fox》,试图做同样的事情:

copy data from MSSQL database to Postgresql database with Python

我以此为基础编写了代码,并通过MSSQL到Postgresql的“ fetchone”一次获得了一行,但是我却无法“ fetchall”并将整列数据插入到postgresql中。

使用以下代码,我得到了错误: “ ProgrammingError:“ [”或附近的语法错误 第1行:插入test_tabell值([])“

我的代码在下面,有什么建议吗?

谢谢!

import pymssql, psycopg2


#Connect to the database
class DatabaseRequest:

    def __init__(self):
        self.conn1 = pymssql.connect(
    host=r'*****',
    user=r'*****',
    password='*****',
    database='*****'
)
        self.conn2 = psycopg2.connect(host='*****', dbname='*****', user= '*****', password='*****')

        self.cur1 = self.conn1.cursor()
        self.cur2 = self.conn2.cursor()

# Fetch data from the MSSQL-database
    def request_proc(self):
        self.cur1.execute("SELECT table.column FROM table")

        global rows 
        rows = self.cur1.fetchall()

        # This prints all the information I want in my new table, so it seems to be able to fetch it, however in the form of "<class 'tuple'>"
        for row in rows:
            print(row)
            print (type(row))
        return rows   


# Insert all data to an existing table in the postgresql database:
    def insert_proc(self):

#This is the statement I think there is something wrong with:
        self.cur2.execute("INSERT INTO table VALUES (%s)" % self.cur1.fetchall())
        self.conn2.commit()



a = DatabaseRequest()
print(a.request_proc(), a.insert_proc())

1 个答案:

答案 0 :(得分:0)

您实际上不需要python。

您可以将表从SQL Server导出到.txt或.csv并将其导入PostgreSQL,但是可能存在一些格式问题。 确保您的列等名称相同。

这种方法应该比使用Python更容易。

祝你好运! :)