将数据从 SQL Server 导入到 MongoDB 是一个常见的数据迁移任务。本文将详细介绍如何使用 Python 编程语言和相应的库来实现这个过程。本文将包括以下几个部分:
- 准备工作
- 连接 SQL Server 和提取数据
- 连接 MongoDB 并插入数据
- 完整示例代码
1. 准备工作
在开始之前,确保已经安装以下软件和库:
- Python 3.x
- SQL Server 数据库
- MongoDB 数据库
pyodbc
库用于连接 SQL Serverpymongo
库用于连接 MongoDB
可以通过以下命令安装 pyodbc
和 pymongo
:
pip install pyodbc pymongo
2. 连接 SQL Server 和提取数据
首先,使用 pyodbc
库连接到 SQL Server 并提取数据。以下是连接 SQL Server 的示例代码:
import pyodbc
# 配置SQL Server连接
server = 'your_server_name' # 替换为你的SQL Server服务器名称或IP地址
database = 'your_database_name' # 替换为你的数据库名称
username = 'your_username' # 替换为你的用户名
password = 'your_password' # 替换为你的密码
# 建立连接
conn = pyodbc.connect(
'DRIVER={ODBC Driver 17 for SQL Server};'
f'SERVER={server};'
f'DATABASE={database};'
f'UID={username};'
f'PWD={password}'
)
# 创建游标
cursor = conn.cursor()
# 执行查询
query = 'SELECT * FROM your_table_name' # 替换为你的表名
cursor.execute(query)
# 获取查询结果
rows = cursor.fetchall()
columns = [column[0] for column in cursor.description]
# 将数据转换为字典列表
data = []
for row in rows:
row_dict = dict(zip(columns, row))
data.append(row_dict)
# 关闭连接
cursor.close()
conn.close()
print("数据从SQL Server提取成功")
在上面的代码中,替换 your_server_name
、your_database_name
、your_username
、your_password
和 your_table_name
为你的实际值。
3. 连接 MongoDB 并插入数据
接下来,使用 pymongo
库连接到 MongoDB 并将数据插入到 MongoDB 集合中。以下是连接 MongoDB 和插入数据的示例代码:
from pymongo import MongoClient
# 配置MongoDB连接
mongo_uri = 'mongodb://your_mongo_host:your_mongo_port/' # 替换为你的MongoDB服务器URI
client = MongoClient(mongo_uri)
# 选择数据库和集合
mongo_db = client['your_mongo_database_name'] # 替换为你的MongoDB数据库名称
collection = mongo_db['your_mongo_collection_name'] # 替换为你的集合名称
# 插入数据
result = collection.insert_many(data)
print(f"数据插入MongoDB成功,插入了{len(result.inserted_ids)}条记录")
在上面的代码中,替换 your_mongo_host
、your_mongo_port
、your_mongo_database_name
和 your_mongo_collection_name
为你的实际值。
4. 完整示例代码
将以上步骤结合起来,形成一个完整的示例代码如下:
import pyodbc
from pymongo import MongoClient
def fetch_data_from_sql_server(server, database, username, password, table):
conn = pyodbc.connect(
'DRIVER={ODBC Driver 17 for SQL Server};'
f'SERVER={server};'
f'DATABASE={database};'
f'UID={username};'
f'PWD={password}'
)
cursor = conn.cursor()
query = f'SELECT * FROM {table}'
cursor.execute(query)
rows = cursor.fetchall()
columns = [column[0] for column in cursor.description]
data = [dict(zip(columns, row)) for row in rows]
cursor.close()
conn.close()
return data
def insert_data_into_mongodb(mongo_uri, database_name, collection_name, data):
client = MongoClient(mongo_uri)
mongo_db = client[database_name]
collection = mongo_db[collection_name]
result = collection.insert_many(data)
return result
if __name__ == "__main__":
# SQL Server配置
sql_server = 'your_server_name'
sql_database = 'your_database_name'
sql_username = 'your_username'
sql_password = 'your_password'
sql_table = 'your_table_name'
# MongoDB配置
mongo_uri = 'mongodb://your_mongo_host:your_mongo_port/'
mongo_database_name = 'your_mongo_database_name'
mongo_collection_name = 'your_mongo_collection_name'
# 从SQL Server提取数据
data = fetch_data_from_sql_server(sql_server, sql_database, sql_username, sql_password, sql_table)
print("数据从SQL Server提取成功")
# 将数据插入MongoDB
result = insert_data_into_mongodb(mongo_uri, mongo_database_name, mongo_collection_name, data)
print(f"数据插入MongoDB成功,插入了{len(result.inserted_ids)}条记录")
总结
本文详细介绍了如何使用 Python 将 SQL Server 中的数据导入到 MongoDB。通过 pyodbc
库从 SQL Server 提取数据,并使用 pymongo
库将数据插入到 MongoDB。提供的完整示例代码展示了整个过程,适用于各种实际场景。希望本文对你的数据迁移工作有所帮助。