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()
.
将路径与内容存储位置连接起来
我正在尝试弄清楚如何在映射的 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()
.