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

如何将Excel Online工作表导入SSIS与SQL?Python尝试未果

Excel Online 工作表导入SQL(免费方案)及SSIS导入方法

一、免费导入SQL的可行方法

1. 修正Python+Microsoft Graph API方案(解决你之前的失败问题)

如果之前用Python没成功,大概率是认证或API调用环节出错,以下是完整可运行的步骤:

  • 先注册一个免费的Azure AD应用(个人账号即可),获取客户端ID、租户ID,并给应用添加Files.Read.All和Sites.Read.All的Graph API委托权限。
  • 安装依赖包:
    pip install msal pandas pyodbc
    
  • 示例代码:
    import msal
    import pandas as pd
    import pyodbc
    
    # 配置参数
    CLIENT_ID = "你的客户端ID"
    TENANT_ID = "你的租户ID"
    EXCEL_FILE_ID = "Excel Online文件的ID(从URL中获取)"
    SHEET_NAME = "要导入的工作表名"
    SQL_CONN_STR = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=你的SQL服务器;DATABASE=目标库;UID=用户名;PWD=密码"
    
    # 获取Graph API令牌
    app = msal.PublicClientApplication(CLIENT_ID, authority=f"https://login.microsoftonline.com/{TENANT_ID}")
    result = app.acquire_token_interactive(scopes=["https://graph.microsoft.com/Files.Read.All"])
    access_token = result["access_token"]
    
    # 读取Excel Online数据
    url = f"https://graph.microsoft.com/v1.0/me/drive/items/{EXCEL_FILE_ID}/workbook/worksheets/{SHEET_NAME}/usedRange"
    headers = {"Authorization": f"Bearer {access_token}"}
    df = pd.read_json(url, headers=headers)
    df = pd.json_normalize(df["values"])
    
    # 写入SQL Server
    conn = pyodbc.connect(SQL_CONN_STR)
    cursor = conn.cursor()
    # 请根据实际表结构调整字段和插入语句
    for _, row in df.iterrows():
        cursor.execute("INSERT INTO 目标表(字段1,字段2) VALUES (?,?)", row[0], row[1])
    conn.commit()
    conn.close()
    
    首次运行会弹出浏览器登录Office 365账号授权,后续可改用静默认证模式。

2. 导出CSV+SQL Server导入向导(零代码免费方案)

这是最易上手的免费方法:

  • 在Excel Online中打开目标工作表,点击「文件」→「下载」→「逗号分隔值(.csv)」,将文件导出到本地。
  • 打开SQL Server Management Studio(SSMS),连接目标SQL服务器,右键目标数据库→「任务」→「导入数据」。
  • 在导入向导中:
    • 数据源选择「平面文件源」,指向导出的CSV文件,配置分隔符、编码等参数。
    • 目标选择「SQL Server Native Client 11.0」,确认服务器和数据库信息。
    • 配置字段映射(自动匹配或手动调整),完成导入。

二、将Excel Online工作表导入SSIS的方法

1. 使用SSIS Office 365 Excel连接器

SSIS官方提供Office 365 Excel数据源组件(适用于SQL Server 2019及以上版本或SSIS Integration Runtime):

  • 打开SSIS项目,在「数据流」选项卡中添加「Office 365 Excel Source」组件。
  • 配置连接管理器:
    • 选择「Office 365 Excel」连接类型,输入Excel Online文件的URL(或从OneDrive/SharePoint选择)。
    • 选择认证方式:可用「用户名和密码」(你的Office 365账号)或「服务主体」(对应之前的Azure AD应用)。
  • 配置数据源,选择要导入的工作表,连接到「SQL Server Destination」组件,配置目标表和字段映射后运行包即可。

2. SSIS脚本任务调用Microsoft Graph API

如果连接器无法满足需求,可通过脚本任务自定义实现:

  • 在SSIS数据流中添加「脚本任务」,选择C#作为脚本语言。
  • 在脚本编辑器中安装Microsoft.Graph和Microsoft.Identity.Client NuGet包。
  • 编写代码获取Excel Online数据(逻辑与Python方案类似),再通过ADO.NET连接写入SQL Server。示例代码片段:
    // 认证部分
    var app = PublicClientApplicationBuilder.Create("你的客户端ID")
                .WithAuthority("https://login.microsoftonline.com/你的租户ID")
                .Build();
    var result = await app.AcquireTokenInteractive(new[] {"https://graph.microsoft.com/Files.Read.All"})
                          .ExecuteAsync();
    var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
    {
        requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", result.AccessToken);
        return Task.CompletedTask;
    }));
    
    // 读取数据
    var worksheet = await graphClient.Me.Drive.Items["文件ID"].Workbook.Worksheets["工作表名"].UsedRange.Request().GetAsync();
    // 此处省略数据转换和SQL插入逻辑,可使用SqlConnection实现
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:45:41