On 02/01/2014 06:42 PM, Mihamina RKTMB wrote:
> Reimporting is done with Apache directory Studio by
> - exporting the tree to ldif
> - importing the exported ldif (overwriting existing entries)
>
> Would you know a scripted way to import as Studio would?
What Studio does is:
1) try to add the entry
2) if that fails with error 68: use changetype:modify and replace each
attribute with all its values defined in the LDIF.
This approach often works but is not a perfect "replace" mechanism. If
an attribute exists within the LDAP server but the same attribute is not
contained in the LDIF then the attribute will not be deleted but remains
unchanged.
So with a script language of your choice you can change the LDIF as
follows (check if you have wrapped lines):
dn: cn=fbar,ou=users,dc=example.dc=com
objectClass: person
objectClass: top
cn: fbar
...
to
dn: cn=fbar,ou=users,dc=example.dc=com
changetype: modify
replace: objectClass
objectClass: person
objectClass: top
-
replace: cn
cn: fbar
-
....
Another thing you may do with a bit sed magic: replace the "dn: " lines
(check if you have wrapped lines) with a changetype:delete and a
changetype:add instruction. For Example:
dn: cn=fbar,ou=users,dc=example.dc=com
objectClass: person
...
becomes
dn: cn=fbar,ou=users,dc=example.dc=com
changetype: delete
dn: cn=fbar,ou=users,dc=example.dc=com
changetype: add
objectClass: person
...
Note that this will delete each entry first, operational attibutes
(createTimestamp, entryUUID) will change!
Kind Regards,
Stefan