2012-02-14 24 views
-4

私は、username、password、fname、lnameなどのヘッダーを持つテーブルに13kユーザーのMSSQLデータベースを持っています。このデータを適切なLDAPサーバーに変換できることが大好きです。ldapにインポートするためにCSVをLDIFに変換しますか?

現在、私は次のことを行っています。mssqlサーバーでジョブを作成して、そのテーブルをcsvで毎時エクスポートします。クエリは、username、password、fname、lastname、およびmemberidを取得します。このデータを毎時linuxのLDAPサーバーにftpしてください。

このcsvをldifに変換する方法をお勧めしますか?ldapmodifyを実行してこれらのエントリをすべてLDAPサーバーに入れることができますか?私はパーサを書くことができると仮定していますが、この方法でCSVをldif変換することができる製品が既に存在するかどうか、この計画が意味をなさないか、これを行う良い方法があるかどうかを知りたいですか?ありがとう。

答えて

-1

単純なGoogle searchは、いくつかのCSV-LDIFコンバータを明らかにしました。

たとえば、scv2ldif2.plです。これはPerlにありますが、PerlのWindows実装を少なくともいくつか見つけることができます(例えばStrawberry Perl)。

0

誰かがまだ何かを探しているような場合には、私は与えられたCSVファイルをLDIF :

;########################################################################################### 
;##### Load requirements 
#include <File.au3> 

;########################################################################################### 
;####  Start the app 

LDIF_Converter() 


;########################################################################################### 
;####  App function 
Func LDIF_Converter() 
    TrayTip("CSV2LDIF Converter","Konvertierung gestartet...",2000,1) 

    Local $file = "import_ADS.ldif", $contacts = 0, $sFilePath = "3CXImport.csv" 
    ; Remote old file 
    FileDelete($file); 
    ; Write Header 
    FileWrite($file,"#Base structure for each person"); 
    Filewrite($file,@crlf) 
    FileWrite($file,"dn: ou=Telefonbuch,dc=example,dc=com"); 
    Filewrite($file,@crlf) 
    FileWrite($file,"ou: Telefonbuch"); 
    Filewrite($file,@crlf) 
    FileWrite($file,"objectClass: organizationalUnit"); 
    Filewrite($file,@crlf) 
    FileWrite($file,"objectClass: top"); 
    Filewrite($file,@crlf) 
    Filewrite($file,@crlf) 

    ; Read out CSV File 
    _FileReadToArray($sFilePath, $contacts, $FRTA_NOCOUNT, ";") 

    ; Write to File for each contact 
    For $i = 0 To UBound ($contacts) - 1 
     ; Clear contact cache 
     $cache = "" 
     ; Write object ID & comman attributes 
     $cache = $cache & "dn: uid="&$i+1&",ou=Telefonbuch,dc=example,dc=com" & @CRLF 
     $cache = $cache & "objectClass: inetOrgPerson" & @CRLF 
     $cache = $cache & "objectClass: organizationalPerson" & @CRLF 
     $cache = $cache & "objectClass: person" & @CRLF 
     $cache = $cache & "objectClass: top" & @CRLF 

     ; Check if company or person and set the corresponding CN 
     if $contacts[$i][1] == "" Then 
      $cn = $contacts[$i][0] 
     Else 
      $cn = $contacts[$i][1] & " " & $contacts[$i][2] 
     EndIf 

     ; Write common name 
     $cache = $cache & "cn: "&$cn & @CRLF 
     if $contacts[$i][1] == "" Then 
      $sn = $contacts[$i][0] 
     Else 
      $sn = $contacts[$i][1] & " " & $contacts[$i][2] 
     EndIf 

     ; Write lastname/company 
     $cache = $cache & "sn: "&$sn & @CRLF 

     ; Write mobile number 
     $mobile = StringRegExpReplace($contacts[$i][5],'[a-zA-Z;\\/:.,*?\"<>|& ]',"") 
     if $mobile <> "" And $mobile <> " " Then 
      $cache = $cache & "mobile: "& $mobile & @CRLF 
     EndIf 

     ; Write organisation 
     if $contacts[$i][0] <> "" Then 
      $cache = $cache & "o: "&$contacts[$i][0] & @CRLF 
     EndIf 

     ; Write telephone number 
     $phone = StringRegExpReplace($contacts[$i][3],'[a-zA-Z;\\/:.,*?\"<>|& ]',"") 
     if $phone <> "" And $phone <> " " Then 
      $cache = $cache & "telephoneNumber: "& $phone & @CRLF 
     EndIf 

     ; Write fax number 
     $fax = StringRegExpReplace($contacts[$i][4],'[a-zA-Z;\\/:.,*?\"<>|& ]',"") 
     if $fax <> "" And $fax <> " " Then 
      $cache = $cache & "facsimileTelephoneNumber: "& $fax & @CRLF 
     EndIf 

     ; Write email 
     if $contacts[$i][6] <> "" Then 
      $cache = $cache & "mail: "&$contacts[$i][6] & @CRLF 
     EndIf 

     ; Seperator for contacts 
     $cache = $cache & @CRLF 
     ; Write all in one file access 
     FileWrite($file,$cache) 
    Next 
    TrayTip("CSV2LDIF Converter","Konvertiertierung abgeschlossen ",2000) 
    sleep(2000) 
EndFunc 
関連する問題