介绍
在数据处理过程中,有时需要将一个数据库里面的数据迁移到另一个数据库中,这就需要进行数据库的导入。本文将介绍如何将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数据库,创建对应的数据表,最后将数据导入到表中,即可完成数据的导入。