我正在使用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/