我正在尝试从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())
答案 0 :(得分:0)
您实际上不需要python。
您可以将表从SQL Server导出到.txt或.csv并将其导入PostgreSQL,但是可能存在一些格式问题。 确保您的列等名称相同。
这种方法应该比使用Python更容易。
祝你好运! :)