Documentum 文档内容共享位置来自 SQL

Documentum Document Content Share Location from SQL

我正在尝试弄清楚如何在映射的 documentum 共享上找到文件的物理位置。使用 API 或 DQL 有多种方法可以做到这一点,但这些方法都无法扩展到我们将数据迁移出系统所需的范围。最终计划是将所有数据迁移出并迁移到新系统中,但我们需要文件位置来进行规划。

以下资源很有帮助:

https://robineast.wordpress.com/2007/01/24/where-is-my-content-stored/ https://community.emc.com/thread/51958?start=0&tstart=0

运行 此 DQL 将为我们提供位置,但所提供的 SQL 不会 return 任何与我们要完成的任务相关的数据(或任何其他数据) .

execute GET_PATH for '<parent_id_goes_here>'

结果:

t:\documentum\data\schema\storage_volume_number[=12=]000000\ef.xlsx 

Additionally, using the API with getpath returns valid data, but when choosing to show the SQL is gives the same query (a little further down) which doesn'实际上没有给出文件的位置。

API>getpath,c,<r_object_id>
...
t:\documentum\data\schema\storage_volume_number[=13=]000000\ef.xlsx 

当您选择 'Show the SQL' 时,这是两者都提供的查询。

select a.r_object_id,    b.audit_attr_names, a.is_audittrail,
       a.event,          a.controlling_app,  a.policy_id,
       a.policy_state,   a.user_name,        a.message,
       a.audit_subtypes, a.priority,         a.oneshot,
       a.sendmail,       a.sign_audit
  from dmi_registry_s a, dmi_registry_r b
 where a.r_object_id = b.r_object_id and a.registered_id = :p0 and (a.event = 'all' or a.event = 'dm_all' or a.event = :p1)
 order by a.is_audittrail desc,   a.event         desc,
          a.r_object_id,          b.i_position    desc;
:p0 = < parent_id >;
:p1 = dm_getfile

上面的查询 returns 在 PL/SQL 中什么都没有,删除 :p0/:p1 变量只是 returns 审计数据。

关于如何使用 SQL 或可以编写的 DQL 脚本来提供 CSV 中要加入的路径和 r_object_id 的任何指导?我也对从该系统中提取数据的其他想法持开放态度。

经过大量挖掘,我发现解决此问题的最佳方法是将数据票证转换为您的路径。引用问题中链接的文章:

The trick to determining the path to the content is in decoding the data_ticket's 2’s complement decimal value. Convert the data_ticket to a 2’s compliment hexadecimal number by first adding 2^32 to the number and then converting it to hex. You can use a scientific calculator to do this or grab some Java code off the net.

-2147474649 + 2^32 = (-2147474649 + 4294967296) = 2147492647

converting 2147492647 to hex = 80002327

Now, split the hex value of the data_ticket at every two characters, append it to file_system_path and docbase_id (padded to 8 bits), and add the dos_extension. Viola! you have the complete path to the content file.

C:/Documentum/data/docbase/content_storage_01/0000001/80/ 00/23/27.txt

此 PowerShell 代码将为您进行转换——只需将数据票据提供给它即可。

$Ticket = -2147474649
$FSTicketInt = $Ticket + [math]::Pow(2, 32)
$FSTicketHex = [Convert]::ToString($FSTicketInt, 16)
$FSTicketPath = ($FSTicketHex -split '(..)' | ? {$_}) -join '\'

然后您需要做的就是使用 [System.IO.Path]::Combine().

将路径与内容存储位置连接起来