sharepoint - 设置Sharepoint 2010列表项的创建和修改日期

标签 sharepoint sharepoint-2010

我正在使用Powershell脚本将数据从现有SQL Server数据库迁移到Sharepoint 2010列表中。现有数据库中的某些记录已创建和修改了日期,客户希望将这些日期转入Sharepoint。

我的迁移脚本使用Sharepoint Lists Web服务上的UpdateListItems方法来上传CAML批次以创建新项目。我已经更新了我的CAML来设置“已创建”列,但是该值似乎被忽略了,只是设置为当前日期。

是否可以通过Web服务或SPWeb对象上的ProcessBatchData方法手动设置这些日期?我在网上看到了一些示例,这些示例暗示可以通过禁用系统更新和调整版本控制来完成单个项目。但是,由于我们要导入大约80万个列表项,因此不能选择处理单个项。

最佳答案

解决方案是从使用Web服务更改为使用SPWeb.ProcessBatchData导入我的数据(感谢Andreas)。

传递给此方法的XML如下所示:

<ows:Batch OnError="Continue">
  <Method ID="1">
    <SetList />
    <SetVar Name="ID">New</SetVar>
    <SetVar Name="Cmd">Save</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#ColumnName1">Value</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#Modified">2009-09-03T15:05:00Z</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#Created">2004-01-15T13:48:00Z</SetVar>
  </Method>
  <Method ID="2">
    ...
  </Method>
  ...
</ows:Batch>

“SetList”元素也应包含用于添加数据的列表的Guid。在我上面的示例XML中,这是空的,因为XML是在将数据导入SharePoint之前预先生成的,并且我们不能保证目标服务器上的Sharepoint列表Guid是相同的,因此我们在导入之前将其填写。

我还必须通过将日期传递到SPUtility.CreateISO8601DateTimeFromSystemDateTime方法中来确保以正确的格式传递日期。

关于sharepoint - 设置Sharepoint 2010列表项的创建和修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724458/

相关文章:

sharepoint - SPFieldDateTime将值更改为无

sharepoint - 我应该使用 SPUtility.ResolvePrincipal() 还是 SPUtility.ResolveWindowsPrincipal()?

xml - 使用 PowerShell 将 InfoPath 表单从库读取到 XML 对象中

sharepoint-2010 - 如何从 Infopath 人员/组选择器中检索电子邮件地址

Sharepoint 2010 - V4.master 的位置

SharePoint 使用 SharePoint Online REST API 获取所有网站和所有子网站

sharepoint - 隐藏 SharePoint 上的 "Page"按钮

c# - 使用 C# 在 Sharepoint Web 部件中使用 .net ajax 和分页时出现意外结果

c# - 隐藏的 ASP/C# 代码无法从标记获得控制

javascript - 如何根据几个已知值确定 Sharepoint ListItem 是否存在?