[Info-vax] Migrating data from RMS : Available tools

Jan-Erik Soderholm jan-erik.soderholm at telia.com
Fri Feb 19 08:11:11 EST 2016


Den 2016-02-19 kl. 13:25, skrev Robert Nelson:
> On Friday, February 19, 2016 at 2:46:17 PM UTC+5:30, Jan-Erik Soderholm
> wrote:
>> If the client has money I guess there are external solutions with
>> gateways against both RMS and Oracle, like Attunity. :-)
>>
>
>
> Actually, I have thinking that Oracle's gateway for RMS would be a nice
> idea. It has now been discontinued. Does anyone know if this is a
> standalone product or part of the Oracle DB software? I am sure there
> must be a version for VMS Itanium.
>
> As for Attinuity, I am not able to get any RMS Specific products on
> their site. Best
>

I was in contact with a swedish Attunity sales person som time
agout about the Attinuty/RMS product, but for the need at hand
at that time, is was priced above what was reasonable for us.
You need is a "one-off", right? For (only) two RMS files?

Another question is if the Oracle DB is running on the same
system as where the RMS files are located?

I'd look at the way you mentioned in the original post:

1. ConnX - connect to RMS, configure CDDs and extract RMS data to CSV.
Use SQL loader to load data to Oracle. This is a two step process and
needs manual steps to extract data from RMS to CSV, verify errors.

Now, what other methods does *not* involve "manual steps"? Since RMS
has no concept of "fields", you'll have to define data descriptions
(I guess what you call "CDDs") no matter what tool you use.

I have done a number of RMS to Rdb transfers using Python.
The main parts for one RMS file looks like:

#
# Define a reord layout for the RMS file.
#

MEF340Rec = Struct("MEF340Rec",
                    String("PRODNR", 10),
                    String("LAND", 4),
                    String("ARTNR", 10),
                    String("RIKTNR", 2),
                    String("ANTAL", 4),
                    String("PROCIND", 1),
                    String("FACKNR", 2),
                    String("FILLER", 9))
#
# Define a class for the RMS access.
# The "Name" points to the actual RMS file.
#

class MEF340(IndexedFile):
     Name = 'ME340A.IDX'
     def __init__(self):
         IndexedFile.__init__(self, MEF340.Name, MEF340Rec)

     def primary_keynum(self):
         return 0

#
# Loop through the RMS file and process each record
# In this case it executes an Rdb INSERT, but it could
# just as well be a printout to a plain file, of course.
# CSV delimiters are easy to add, if neeeded.
#
# "f" is a handle for the RMS file and "rec" is an
# interator for each record.
#

rdb.read_write()

f = MEF340()
for rec in f:

    ins_stm.execute(rec.PRODNR, rec.LAND, rec.ARTNR, rec.RIKTNR,
                    rec.ANTAL, rec.PROCIND, rec.FACKNR)

    f_loaded = f_loaded + 1

rdb.commit()
print "Number loaded =", f_loaded


That's it...





More information about the Info-vax mailing list