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

如何将PowerShell提取的Yammer组成员保存到Azure SQL数据库?

将Yammer组成员数据导入Azure SQL数据库的实现方案

1. 修改PowerShell脚本直接写入Azure SQL表

首先需要在Azure SQL数据库中创建匹配Yammer用户字段的表,示例建表语句:

CREATE TABLE YammerGroupMembers (
    Id INT PRIMARY KEY,
    FullName NVARCHAR(255),
    Email NVARCHAR(255),
    JobTitle NVARCHAR(255),
    Department NVARCHAR(255),
    CreatedAt DATETIME
);

然后修改原PowerShell脚本,在获取成员数据后直接批量插入Azure SQL表,避免逐条插入的性能损耗:

$GroupId=xxxxx
$Token = "xxxx"
$Headers = @{ "Authorization" = "Bearer "+$Token }

# Azure SQL连接配置
$connectionString = "Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Initial Catalog=<数据库名>;Persist Security Info=False;User ID=<用户名>;Password=<密码>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
$tableName = "YammerGroupMembers"

$YammerGroups = @()
$GroupCycle = 1
DO
{
    $GetMoreGroupsUri = "https://www.yammer.com/api/v1/users/in_group/$GroupId.xml?page=$GroupCycle"
    write-host ("REST API CALL : $GetMoreGroupsUri")
    [xml]$Xml = ((Invoke-WebRequest -Uri $GetMoreGroupsUri -Method Get -Headers $Headers).content)
    $YammerGroups += $Xml.response.users.user
    $GroupCycle ++
    $GroupCount += $Xml.response.users.user.count
    write-host ("GROUPMEMBER COUNT : $GroupCount")
}   
While ($Xml.response.users.user.count -gt 0)

# 过滤空数据并转换为DataTable
$filteredMembers = $YammerGroups | Where {$_}
$dt = New-Object System.Data.DataTable
$dt.Columns.Add("Id", [int])
$dt.Columns.Add("FullName", [string])
$dt.Columns.Add("Email", [string])
$dt.Columns.Add("JobTitle", [string])
$dt.Columns.Add("Department", [string])
$dt.Columns.Add("CreatedAt", [datetime])

foreach ($member in $filteredMembers) {
    $row = $dt.NewRow()
    $row["Id"] = $member.id
    $row["FullName"] = $member.full_name
    $row["Email"] = $member.email
    $row["JobTitle"] = $member.job_title
    $row["Department"] = $member.department
    $row["CreatedAt"] = [datetime]$member.created_at
    $dt.Rows.Add($row)
}

# 批量插入到Azure SQL
$bulkCopy = New-Object Data.SqlClient.SqlBulkCopy($connectionString)
$bulkCopy.DestinationTableName = $tableName
$bulkCopy.WriteToServer($dt)
write-host "数据已成功写入Azure SQL表"

注意:需根据Yammer API返回的实际字段调整DataTable列,确保与SQL表结构完全匹配。

2. 使用Azure SQL的批量导入功能

如果希望保留原脚本导出CSV的逻辑,可通过以下Azure SQL原生功能完成导入:

方法一:使用bcp命令行工具

安装SQL Server命令行工具后,执行以下命令批量导入CSV:

bcp <数据库名>..YammerGroupMembers in "$GroupId.csv" -S <SQL服务器名>.database.windows.net -d <数据库名> -U <用户名> -P <密码> -c -t, -r\n -F 2

参数说明:

  • -c:采用字符格式导入
  • -t,:指定逗号为字段分隔符
  • -r\n:指定换行符为行结束符
  • -F 2:跳过CSV的表头行

方法二:使用BULK INSERT语句

先将CSV上传至Azure Blob存储,然后在Azure SQL中执行:

BULK INSERT YammerGroupMembers
FROM '<Blob存储中CSV的SAS URL>'
WITH (
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n',
    MAXERRORS = 0
);

该方式无需本地操作,适合云端自动化同步场景。

3. 其他云端自动化方法

Azure Logic Apps

完全脱离本地脚本,实现端到端自动化:

  • 创建定时触发的Logic App
  • 添加Yammer连接器,调用List users in group接口获取成员数据
  • 添加Azure SQL连接器,用Batch insert rows操作批量写入SQL表
    适合长期自动同步的需求,无需维护本地脚本。

Azure Functions

编写PowerShell/C#类型的Azure Function,定时触发调用Yammer API,处理数据后写入Azure SQL。灵活性更高,适合需要自定义数据清洗、转换逻辑的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:55:21