我希望能够将LDIF文件批量导入LDAP服务器。我有一个使用UnboundID LDAP SDK的工作实现(见下文)。问题在于它循环遍历LDIF中的每个条目,并且对于大型文件(数百万条目)会非常缓慢。是否有任何工具/ SDK可用于高速导入?我需要能够实现这个编程(最好是Java)。谢谢!以编程方式批量导入LDIF
public static void importLdif(){
try{
LDAPConnection connection = new LDAPConnection("ldapserver.com", 389,
"uid=admin,ou=system", "secret");
LDIFReader ldifReader = new LDIFReader("C:/Users/ejamcud/Desktop/LDAP/ldifs/Sailors.ldif");
int entriesRead = 0;
int entriesAdded = 0;
int errorsEncountered = 0;
Entry entry;
LDAPResult addResult;
while (true)
{
try
{
entry = ldifReader.readEntry();
if (entry == null)
{
System.out.println("All entries have been read.");
break;
}
entriesRead++;
}
catch (LDIFException le)
{
errorsEncountered++;
if (le.mayContinueReading())
{
// A recoverable error occurred while attempting to read a change
// record, at or near line number le.getLineNumber()
// The entry will be skipped, but we'll try to keep reading from the
// LDIF file.
continue;
}
else
{
// An unrecoverable error occurred while attempting to read an entry
// at or near line number le.getLineNumber()
// No further LDIF processing will be performed.
break;
}
}
catch (IOException ioe)
{
// An I/O error occurred while attempting to read from the LDIF file.
// No further LDIF processing will be performed.
errorsEncountered++;
break;
}
try
{
addResult = connection.add(entry);
// If we got here, then the change should have been processed
// successfully.
System.out.println(entry.toLDIFString());
entriesAdded++;
}
catch (LDAPException le)
{
// If we got here, then the change attempt failed.
le.printStackTrace();
addResult = le.toLDAPResult();
errorsEncountered++;
}
}
}catch(IOException ioe){
ioe.printStackTrace();
}
catch(LDAPException lde){
lde.printStackTrace();
}finally{
//ldifReader.close();
}
}
您可以将OpenLDAP客户端工具与任何符合要求的LDAP服务器一起使用。 – EJP