You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Python脚本:从Oracle提取数据并插入SQL Server

Oracle数据提取并插入SQL Server的Python脚本实现

要实现将Oracle提取的数据插入SQL Server,你可以使用pyodbc库连接SQL Server,同时采用批量插入逻辑提升效率。以下是补充完整的代码实现:

完整代码

import cx_Oracle
import pyodbc

# ---------------------- Oracle 连接与数据提取 ----------------------
# Oracle 连接配置
oracle_user = "username"
oracle_password = "password"
oracle_dsn = "servername/PROD"

# 建立Oracle连接
oracle_conn = cx_Oracle.connect(user=oracle_user, password=oracle_password, dsn=oracle_dsn)
oracle_cursor = oracle_conn.cursor()

# 显式指定查询字段(避免SELECT *导致字段匹配问题)
query = """
SELECT DRAW_NUM, COL1, COL2, COL3  -- 替换为你的实际字段名
FROM LOTTO_BI.LOTO_DRAW_RESULTS 
ORDER BY DRAW_NUM
"""
oracle_cursor.execute(query)

# 获取字段名与查询结果集
columns = [desc[0] for desc in oracle_cursor.description]
data = oracle_cursor.fetchall()

# ---------------------- SQL Server 连接与数据插入 ----------------------
# SQL Server 连接字符串(根据实际环境调整)
sql_server_conn_str = (
    "DRIVER={ODBC Driver 17 for SQL Server};"
    "SERVER=your_sql_server_name;"
    "DATABASE=your_database_name;"
    "UID=sql_username;"
    "PWD=sql_password;"
)

# 建立SQL Server连接
sql_server_conn = pyodbc.connect(sql_server_conn_str)
sql_server_cursor = sql_server_conn.cursor()

# 构造批量插入语句
insert_query = f"""
INSERT INTO LOTO_DRAW_RESULTS ({', '.join(columns)})
VALUES ({', '.join(['?' for _ in columns])})
"""

# 批量插入数据(可根据数据量调整批量大小)
batch_size = 1000
for i in range(0, len(data), batch_size):
    batch = data[i:i+batch_size]
    sql_server_cursor.executemany(insert_query, batch)
    sql_server_conn.commit()

# ---------------------- 关闭资源 ----------------------
oracle_cursor.close()
oracle_conn.close()
sql_server_cursor.close()
sql_server_conn.close()

print("数据迁移完成")

关键注意事项

  • 字段匹配:确保SQL Server目标表的字段数量、顺序、数据类型与Oracle查询的字段完全对齐,禁止用SELECT *模糊查询。
  • 依赖安装:需要安装pyodbc库(pip install pyodbc),并在服务器上安装对应版本的SQL Server ODBC驱动(如ODBC Driver 17 for SQL Server)。
  • 性能优化:批量插入比逐行插入效率提升显著,可根据数据总量调整batch_size参数。
  • 异常处理:生产环境建议添加try-except块捕获连接、查询、插入过程中的异常,避免程序意外崩溃。
  • 资源释放:操作完成后必须关闭游标和数据库连接,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Pravesh Loto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:15:38