mssql数据实现db2数据库的导入

介绍

在数据处理过程中,有时需要将一个数据库里面的数据迁移到另一个数据库中,这就需要进行数据库的导入。本文将介绍如何将mssql中的数据,通过一些步骤,并利用db2导入数据。

步骤

步骤1:连接mssql数据库

首先需要先连接mssql数据库。可以通过odbc(Open Database Connectivity)方式来连接数据库。下面是连接数据库的代码:

import pyodbc

conn = pyodbc.connect('Driver={SQL Server};'

'Server=localhost\\SQLEXPRESS;'

'Database=数据库名;'

'Trusted_Connection=yes;')

cursor = conn.cursor()

其中,localhost\\SQLEXPRESS是你的mssql服务器地址,数据库名是你的数据库名称,在Trusted_Connection=yes下面则是该连接是否使用Windows认证来登录。如果是,则会使用当前登录账户的安全凭证来访问。

步骤2:将mssql中的数据导出

在连接好mssql数据库之后,我们可以使用以下代码来将其中的数据导出,实现将数据从mssql数据库中获取:

cursor.execute('SELECT * FROM 数据表名')

with open("export.csv", "w") as fp:

fp.write("\n".join([",".join([str(x) for x in row])

for row in cursor.fetchall()]))

其中,'SELECT * FROM 数据表名'中,数据表名是要导出的表的名称。该命令会对该表中的全部数据进行导出。

运行以上代码后,数据会被导出到当前路径下的"export.csv"文件中。

步骤3:连接db2数据库

与上一个步骤类似,我们需要先连接db2数据库。可以使用以下代码连接数据库:

import ibm_db

dsn_driver = "{{IBM DB2 ODBC DRIVER}}"

dsn_database = "database_name"

dsn_hostname = "hostname"

dsn_port = "50000"

dsn_protocol = "TCPIP"

dsn_uid = "user_id"

dsn_pwd = "password"

dsn = ("DRIVER={{IBM DB2 ODBC DRIVER}};"

"DATABASE=database_name;"

"HOSTNAME=hostname;"

"PORT=50000;"

"PROTOCOL=TCPIP;"

"UID=user_id;"

"PWD=password;")

try:

conn = ibm_db.connect(dsn, "", "")

print("Connected to the database!")

except:

print("Unable to connect to the database.")

其中,database_name指需要连接的数据库名,hostname为数据库服务器地址,50000为数据库连接端口号,user_id和password分别为登录用的用户名和密码。

步骤4:在db2数据库中创建表

在将数据导入到db2数据库中之前,需要先在该数据库中创建对应的表。下面是创建表的代码:

stmt = ibm_db.exec_immediate(conn, 'CREATE TABLE 表名 (列1 数据类型, 列2 数据类型, 列3 数据类型)')

ibm_db.close(conn)

print("Table created!")

其中,'CREATE TABLE 表名 (列1 数据类型, 列2 数据类型, 列3 数据类型)'是创建对应表的命令。表名和列名需要按照实际情况进行修改。

步骤5:将数据导入到db2数据库中

最后一步就是将数据导入到db2数据库中。可以通过以下代码实现:

import pandas as pd

df = pd.read_csv("export.csv")

dsn_driver = "{{IBM DB2 ODBC DRIVER}}"

dsn_database = "database_name"

dsn_hostname = "hostname"

dsn_port = "50000"

dsn_protocol = "TCPIP"

dsn_uid = "user_id"

dsn_pwd = "password"

dsn = ("DRIVER={{IBM DB2 ODBC DRIVER}};"

"DATABASE=database_name;"

"HOSTNAME=hostname;"

"PORT=50000;"

"PROTOCOL=TCPIP;"

"UID=user_id;"

"PWD=password;")

try:

conn = ibm_db.connect(dsn, "", "")

print("Connected to the database!")

except:

print("Unable to connect to the database.")

data = df.to_numpy()

stmt = ibm_db.prepare(conn, "INSERT INTO 表名 (列1, 列2, 列3) VALUES (?, ?, ?)")

for row in data:

ibm_db.execute(stmt, tuple(row))

ibm_db.close(conn)

其中,'INSERT INTO 表名 (列1, 列2, 列3) VALUES (?, ?, ?)'是将数据插入到对应表中的命令。需要将表名和列名按照实际情况进行修改。通过for循环遍历导出的数据,并将每行数据插入到表中。

结论

本文介绍了将mssql数据库中的数据导入到db2数据库的过程。通过连接mssql数据库,将数据导出到本地,连接db2数据库,创建对应的数据表,最后将数据导入到表中,即可完成数据的导入。

数据库标签