如何将超过一百万个项目加载到SharePoint Online列表

时间:2020-08-02 22:35:22

标签: sharepoint

有人可以建议一种合理实用且有效的方法来将120万个测试项目加载到SharePoint Online列表中吗?

背景:我们已决定在SharePoint Online之上构建一个新应用程序。由于各种原因,其他应用程序体系结构选项均被证明不可行。该应用程序将使用多个SharePoint列表来保持持久性,其中一个列表将很大,高峰时大约有120万个项目。 (是的,我们正在计划处理5000个项目的视图限制的方法。)要测试体系结构的可行性(包括那些视图限制策略),我们需要在列表中创建120万个测试项目。我们尝试过的一切都不可行:

  • 尝试使用5个并发线程对REST API进行POST调用,因此它将在合理的时间内完成。用HTTP 429“请求过多”后,此操作将失败。
  • 尝试上传包含120万行的电子表格。每次输入13万个条目时,此操作都会失败,而且我看不到一种实用的方法,既不能上传/附加到现有列表,也不能将项目从一个列表附加到另一个现有列表。
  • 尝试运行工作流(如果重要,请使用SharePoint 2013变体)。这行得通,但单线程运行速度太慢,我不愿意尝试多个并发工作流,因为这是一个共享环境,如果我丢弃服务器,那将是不好的方式。

在此先感谢任何指针!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用pnp powershell添加超过一百万个项目。

$username = "amos@contoso.onmicrosoft.com"
$password = "password"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $(convertto-securestring $Password -asplaintext -force)
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/dev -Credentials $cred
$ListName ="testn"
 for($i=0;$i -lt 1000001;$i++){
Add-PnPListItem -List $ListName -Values @{"Title" = "test";}    
}

答案 1 :(得分:0)

使用 PnPPowershell 从 SPO 加载和处理项目的最快方法如下。思路是不要在任何变量中初始化items集合,直接按页面大小处理items。

Get-PnpListItem -List "{ListName}" -Fields "Field1","Field2","Fieldn" -PageSize 5000 | % {$i=0}{

% {$i=0}{

不要移动{到下一行,我知道这很奇怪,但如果你移动了,那么祝你好运。

$item = $_

#用 $item 做你的事

写入主机 $item.Id

}