我想使用Perl模块sapnwrfc从一个大型SAP表(几百万个条目)中检索数据,并将其导出到CSV文件。
这个想法是使用功能模块RFC_READ_TABLE如下:
# Connect to SAP system
# [...]
my $rd = $conn->function_lookup("RFC_READ_TABLE");
my $rc = $rd->create_function_call;
$rc->QUERY_TABLE("/PLMB/AUTH_OBSID");
$rc->DELIMITER("@");
$rc->FIELDS([ {'FIELDNAME' => 'OBJECT_ID'}, {'FIELDNAME' => 'SID'} ]);
$rc->OPTIONS([{'TEXT' => 'OBJ_TYPE = \'PLM_DIR\''}]);
$rc->invoke;
# Iterate over $rc-DATA and export it to CSV file
# [...]
$conn->disconnect;
问题是,由于检索到的数据超出了现有内存,因此脚本会以内存不足错误终止。
有没有可能像分页机制或类似的东西来避免这个问题?
2条答案
按热度按时间t3psigkw1#
基于SAP SCN上的Python代码片段,我找到了解决问题的方法。
通过函数模块RFC_READ_MODULE的导入参数ROWSKIPS和ROWCOUNT,我可以获取具有行块的数据:
q43xntqr2#
这不是RFC_READ_TABLE的目的。您将不得不采取其他提取方法。