ページの先頭行へ戻る
Interstage Application Server ディレクトリサービス運用ガイド

5.5.2 データベースから抽出したCSVファイルを使う

  CSVファイルには、1行に1エントリの追加・削除・更新に必要な情報を記述します。各レコード(項目)は、区切り文字にカンマを使用します。カンマ文字を値に指定する場合、項目全体を「"」(ダブル引用符)で囲んでください。

  CSVファイルの各項目の意味やエントリに対する操作内容を、XML形式のルールファイルで定義する必要があります。CSVファイルを使用してユーザ情報を登録するには、このルールファイルも合わせて指定します。
  以下の場所にサンプルファイルがあります。

C:\Interstage\IREP\sample\csv\JA

/opt/FJSVirep/sample/csv/JA

  上記のサンプルで使用するリポジトリの設定は、以下のとおりです。

リポジトリのホスト名

hostname

管理者用DNのパスワード

admin

その他

初期値を使用

  また、各CSVファイルサンプルと同じ操作ができるLDIFファイルサンプルが、同じ位置に格納されています。処理結果を確認する際に使用してください。

5.5.2.1 CSVファイルとルールファイル

  CSVファイル、および、ルールファイルの形式について説明します。

◆CSVファイル

  移入するエントリ情報の定義は、0番目の項目のみ以下のように規定されています(項目の数え方は“0”から始まります)。リポジトリに対する操作を指定します。
  0番目の項目に、これらの指定値以外を記述した(何も記述しない場合を含む)場合、その行はコメント行とみなされます。
  1番目の項目以降は、後述のルールファイルの指定により、指定内容を自由に定義できます。

指定値

意味

ADD

エントリを追加します。

DEL

エントリを削除します。

MOD

エントリを更新します。

  リポジトリに存在しないエントリに対し、“MOD”を指定した場合、“ADD”動作を行います。

◆ルールファイル

  ルールファイルは、CSVファイルの情報をInterstage ディレクトリサービス内のデータベースにエントリとして登録(更新・削除)するための変換規則を定義したファイルです。CSVファイルとルールファイルの関係を以下に示します。

  ルールファイルの形式について説明します。

  次のタグは、XML宣言およびDTD(文書型定義)を記述しているため、ルールファイルの先頭で必ず記述してください。サンプルファイルから複写して使用することを推奨します。

<?xml version="1.0" encoding="EUC-JP" ?>
<!DOCTYPE Csv2Directory [
<!ELEMENT Rule (name, baseDn, midDn?, Rdn+, DnChange?, objectClass+, attributeSeparator?, unique*, CSV, fixed?)>
<!ELEMENT CSV (ldapop?, Attribute)>
<!ELEMENT ldapop (op?, ldapadd?, ldapdelete?, ldapmodify?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT baseDn (#PCDATA)>
<!ELEMENT Rdn (#PCDATA)>
<!ELEMENT objectClass (#PCDATA)>
<!ELEMENT attributeSeparator (#PCDATA)>
<!ELEMENT op (#PCDATA)>
<!ELEMENT ldapadd (#PCDATA)>
<!ELEMENT ldapdelete (#PCDATA)>
<!ELEMENT ldapmodify (#PCDATA)>
]>

  ルールファイルを構成する要素について説明します。
  以下に、要素構成図を示します。

  ルールファイルの記述に関して、全般的な注意事項を以下に示します。

  各要素について説明します。

Csv2Directory

[設定内容]
  値はありません。

[指定できる回数]
  省略不可、1回

[下位要素]
  Rule

Rule

[設定内容]
  値はありません。

[指定できる回数]
  省略不可

[上位要素]
  Csv2Directory

[下位要素]
  name、baseDn、midDn、Rdn、DnChange、objectClass、attributeSeparator、unique、CSV、fixed

name

[設定内容]
  この値はコマンドの実行に影響はありませんが、サンプルの記述をそのまま使用してください。

[初期値]
  ありません。

[指定できる回数]
  省略不可、1回

[上位要素]
  Rule

baseDn

[設定内容]
  エントリ操作時のベースDNを、DN形式で指定します。

[初期値]
  ありません。

[指定できる回数]
  省略不可、1回

[上位要素]
  Rule

midDn

[設定内容]
  対象のエントリがベースDN直下でない場合、対処となる中間のRDNを指定します。DN形式で指定します。

[初期値]
  ありません。

[指定できる回数]
  省略可能、1回

[上位要素]
  Rule

Rdn

[設定内容]
  エントリのRDNとする属性名を指定します。Attribute要素の記述によっては、属性名ではRDNが一意にならない場合があります。このような場合は、CSVファイルの項目番号を指定してください。ここでは、項目番号を“+”で連結することはできません。
  また、重複する値を指定することはできません。

[初期値]
  ありません。

[指定できる回数]
  省略不可、1回以上

[上位要素]
  Rule

DnChange

[設定内容]
  DNの変更を移動とみなす場合に1を指定します。1以外の値を指定した場合、DnChangeタグの指定がなかったものとして扱われます。
  DNを変更する場合、通常は新規にエントリが作成されるのみで、古い(元となった)エントリは削除されません。本タグを指定することで古いエントリが削除されます。

[初期値]
  1

[指定できる回数]
  省略可能、1回

[上位要素]
  Rule

objectClass

[設定内容]
  エントリに指定するobjectClassを指定します。重複する値を指定することはできません。

[初期値]
  ありません。

[指定できる回数]
  省略不可、1回以上

[上位要素]
  Rule

attributeSeparator

[設定内容]
  CSVファイルからのマッピング時の項目を連結する場合のセパレータ文字を指定します。任意の文字列で指定します。複数回指定した場合、最初に指定されたものが有効となります。

[初期値]
  ありません。

[指定できる回数]
  省略可能

[上位要素]
  Rule

unique

[設定内容]
  ベースDN配下で一意性をチェックする属性を指定します。Attribute要素の記述によっては、属性が一意にならない場合があります。このような場合は、CSVファイルの項目番号を指定してください。ここでは、項目番号を“+”で連結することはできません。
  また、重複する値を指定することはできません。

[初期値]
  ありません。

[指定できる回数]
  省略可能、2回以下

[上位要素]
  Rule

CSV

[設定内容]
  値はありません。

[初期値]
  ありません。

[指定できる回数]
  省略不可

[上位要素]
  Rule

[下位要素]
  Ldapop、Attribute

Ldapop

[設定内容]
  値はありません。このタグは固定です、階層位置を変更しないでください。

[初期値]
  ありません。

[指定できる回数]
  省略可能

[上位要素]
  CSV

[下位要素]
  op、ldapadd、ldapdelete、ldapmodify

op

[設定内容]
  エントリの操作種別を規定しているCSVファイルの項目位置を示します。行の先頭を0番目として数えます。このタグは固定です、階層位置と値を変更しないでください。

[初期値]
  0

[指定できる回数]
  省略可能、1回

[上位要素]
  Ldapop

ldapadd

[設定内容]
  エントリ追加操作を指示するための文字列を指定します。このタグは固定です、階層位置を変更しないでください。

ADD

  この場合、op要素で指定されたCSVファイルの項目位置に、“ADD”が記述されていると、その行の情報で、エントリ追加操作が行われます。

  ldapadd、ldapdelete、ldapmodify要素は、互いに重複する値を指定することはできません。

[初期値]
  ADD

[指定できる回数]
  省略可能、1回

[上位要素]
  Ldapop

ldapdelete

[設定内容]
  エントリ削除操作を指示するための文字列を指定します。このタグは固定です、階層位置を変更しないでください。

DEL

  この場合、op要素で指定されたCSVファイルの項目位置に、“DEL”が記述されていると、その行の情報が示すエントリの削除操作が行われます。

  ldapadd、ldapdelete、ldapmodify要素は、互いに重複する値を指定することはできません。

[初期値]
  DEL

[指定できる回数]
  省略可能、1回

[上位要素]
  Ldapop

ldapmodify

[設定内容]
  エントリ更新操作を指示するための文字列を指定します。このタグは固定です、階層位置を変更しないでください。

MOD

  この場合、op要素で指定されたCSVファイルの項目位置に、“MOD”が記述されていると、その行の情報で、エントリ更新操作が行われます。

  ldapadd、ldapdelete、ldapmodify要素は、互いに重複する値を指定することはできません。

[初期値]
  MOD

[指定できる回数]
  省略可能、1回

[上位要素]
  Ldapop

Attribute

[設定内容]
  属性値にCSVファイルの項目の値を設定する場合に使用します。属性とCSVファイルの項目位置を対応づけます。
  この要素の下位要素として、エントリに追加または更新する属性名の要素を指定します。属性名を、下位要素のタグの文字列として指定します。下位要素の値には、CSVファイル上の対象項目の項目位置を指定します。項目位置は、開始位置を0として数えます。“+”文字で項目を複数指定することもできます。

<description>8+1</description>

  Attributeタグで設定している項目位置の最大値より、CSVファイルの項目が多い場合、最大値を超えた分は無視します。
  Attributeタグで設定している項目位置の最大値より、CSVファイルの項目が少ない場合、対応する値がないものとして扱います。

[初期値]
  ありません。

[指定できる回数]
  省略不可

[上位要素]
  CSV

[下位要素]
  エントリに追加、または更新する属性の属性名を、下位要素名とします。属性値が可変のものを指定します。

<cn>1</cn>

fixed

[設定内容]
  属性値に固定値を設定する場合に使用します。
  この要素の下位要素として、エントリに追加または更新する属性名の要素を指定します。属性名を、下位要素のタグの文字列として指定します。下位要素の値が、固定値そのものです。

[初期値]
  ありません。

[指定できる回数]
  省略可能、1回

[上位要素]
  Rule

[下位要素]
  エントリに追加、または更新する属性の属性名を、下位要素名とします。属性値が固定のものを指定します。

<o>fujitsu</o>

  ここで、Attributeタグの下位要素として指定した属性名と同じ名前を指定した場合、fixedタグの下位要素で指定したものが優先されます。

5.5.2.2 CSVファイルによるエントリの追加・削除・更新

  CSVファイルの記述例を示します。


  下位エントリがあるエントリ(サブツリー)に対して、一度の操作で、削除することはできません。リーフ(最下位)エントリから順に、削除してください。

エントリ追加の記述例

  ユーザ情報エントリを追加する場合の記述例を示します。
  例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。

ユーザ情報エントリの追加

  CSVファイルのデータとユーザエントリの属性を以下のように関連付けて、ユーザ情報エントリをリポジトリに追加する場合の例で説明します。

項目の
位置

項目名

属性名

1

一般名

cn

2

sn

3

givenName

4

ユーザID

uid

5

パスワード

userPassword

6

従業員番号

employeeNumber

7

電子メールアドレス

mail

CSVファイル

  0番目の項目に“ADD”を指定し、次桁から追加するエントリ情報を記述します。

ユーザ情報エントリ追加のCSVファイル

ADD,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com
ADD,User002,Fujitsu,user002,100002,iyaBWF09,10002,user002@interstage.fujitsu.com
ADD,User003,Fujitsu,user003,100003,YNY62GCO,10003,user003@interstage.fujitsu.com
ADD,User004,Fujitsu,user004,100004,mfQShkEK,10004,user004@interstage.fujitsu.com
ADD,User005,Fujitsu,user005,100005,9pcurysl,10005,user005@interstage.fujitsu.com
ADD,User006,Fujitsu,user006,100006,JqzLhqI6,10006,user006@interstage.fujitsu.com(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。
  追加するすべてのエントリが同じ属性型と属性値をもつ場合、Fixedタグを記述すると、CSVファイルに記述する量を減らすことができます。

ユーザ情報エントリ追加のルールファイル

<?xml version="1.0" encoding="EUC-JP" ?>
<!-- 修正禁止↓ -->
<!DOCTYPE Csv2Directory [
<!ELEMENT Rule (name, baseDn, midDn?, Rdn+, DnChange?, objectClass+, attributeSeparator?, unique*, CSV, fixed?)>
<!ELEMENT CSV (ldapop?, Attribute)>
<!ELEMENT ldapop (op?, ldapadd?, ldapdelete?, ldapmodify?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT baseDn (#PCDATA)>
<!ELEMENT Rdn (#PCDATA)>
<!ELEMENT objectClass (#PCDATA)>
<!ELEMENT attributeSeparator (#PCDATA)>
<!ELEMENT op (#PCDATA)>
<!ELEMENT ldapadd (#PCDATA)>
<!ELEMENT ldapdelete (#PCDATA)>
<!ELEMENT ldapmodify (#PCDATA)>
]>
<!-- 修正禁止↑ -->
<Csv2Directory>
    <Rule>
        <name>rule</name>

<!-- baseDn を定義します(必須) -->
        <baseDn>ou=User,ou=interstage,o=fujitsu,dc=com</baseDn>

<!-- RDN を定義します(必須:複数可能:重複不可) -->
<!-- 番号か属性名のどちらか一方で、一意になるものをいれてください -->
        <Rdn>cn</Rdn>

<!-- DN の変更を移動とみなすか(任意) -->
<!-- みなす場合 1 を指定してください -->
        <DnChange>1</DnChange>
        <objectClass>top</objectClass>
        <objectClass>person</objectClass>
        <objectClass>inetOrgPerson</objectClass>

<!-- 属性値が複数のCSV項目から作成する場合の区切りの文字(任意) -->
<!-- 指定しない場合は空白1文字です。 -->
<!-- 空白文字は指定できません。-->
        <attributeSeparator>-</attributeSeparator>

<!-- baseDnの下で、重複を許可しない属性を指定してください -->
<!-- 番号か属性名のどちらか一方で、一意になるものをいれてください -->
<!-- (任意:複数可能:重複不可)-->
        <unique>uid</unique>

        <CSV>
<!-- リポジトリへの操作(追加、削除、変更)とCSVの位置(任意) -->
<!-- 0番目の位置に、操作方法を指定する場合 -->
            <ldapop>
                <op>0</op>
                <ldapadd>ADD</ldapadd>
                <ldapdelete>DEL</ldapdelete>
                <ldapmodify>MOD</ldapmodify>
            </ldapop>

<!-- CSVの各項目とエントリの属性の対応づけ(任意) -->
            <Attribute>
                <cn>1</cn>
<sn>2</sn>
<givenName>3</givenName>
<uid>4</uid>
<userPassword>5</userPassword>
<employeeNumber>6</employeeNumber>
<mail>7</mail>
</Attribute> </CSV> <!-- 固定値で設定するものを定義します(任意) --> <fixed> <postalCode>105-7123</postalCode>
<postalAddress>1-5-2 Higashi-Shimbashi Minato-ku</postalAddress>
<st>Tokyo</st>
<o>fujitsu</o>
</fixed> </Rule> </Csv2Directory>
irepmodifyentコマンド使用例

irepmodifyent -h hostname -p 389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -r rule.xml -i add.csv(注)

)改行を入れないで1行で入力します。

エントリ削除の記述例

  ユーザ情報エントリを削除する場合の記述例を示します。
  例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。

  CSVファイルのデータとユーザエントリの属性との関連付けは、“ユーザ情報エントリの追加”で示したものと同じである、として説明します。
  次の2つのユーザ情報エントリを削除する場合の、CSVファイルとルールファイルの記述例を示します。

dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
dn: cn=User006,ou=User,ou=interstage,o=fujitsu,dc=com

CSVファイル

  0番目の項目に“DEL”を指定し、次桁から削除するエントリ情報を記述します。

ユーザ情報エントリ削除のCSVファイル

DEL,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com
DEL,User006,Fujitsu,user006,100006,JqzLhqI6,10006,user006@interstage.fujitsu.com(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。“ユーザ情報エントリの追加”で使用したルールファイルを使用してください。

irepmodifyentコマンド使用例

irepmodifyent -h hostname -p 389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -r rule.xml -i del.csv(注)

)改行を入れないで1行で入力します。

エントリ更新の記述例

  ユーザ情報エントリを更新する場合の記述例を示します。
  例中に記載のオブジェクトクラス、属性については、それぞれ、“付録A オブジェクトクラス一覧”、“付録B 属性一覧”を参照してください。


  更新の対象となるユーザ情報エントリが存在しない場合は、対象のエントリを追加します。

属性値の追加

  “ユーザ情報エントリの追加”で追加した次のエントリに、電話番号を追加する場合を例にとって、CSVファイルとルールファイルの記述方法を説明します。

dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com

  CSVファイルのデータとユーザエントリの属性との関連付けは、“ユーザ情報エントリの追加”で示したものに、さらに、8番目に電話番号のデータを記述します。

項目の
位置

項目名

属性名

8

電話番号

telephonenumber

CSVファイル

  0番目の項目に“MOD”を指定し、次桁から属性値を追加するエントリ情報を記述します。8番目の項目に電話番号(telephonenumber)を記述します。

電話番号追加のCSVファイル

MOD,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com,5555-0123(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。“ユーザ情報エントリの追加”で使用したルールファイルを使用してください。
  Attributeタグに、telephonenumberの記述を追加します。

電話番号追加のルールファイル(Attributeタグ内のみを示します。)

<Attribute>
<cn>1</cn>
<sn>2</sn>
<givenName>3</givenName>
<uid>4</uid>
<userPassword>5</userPassword>
<employeeNumber>6</employeeNumber>
<mail>7</mail>
<telephonenumber>8</telephonenumber>
</Attribute>

◆属性値の削除

  “属性値追加”で追加した電話番号を削除する場合のCSVファイルとルールファイルの記述例を示します。

CSVファイル

  0番目の項目に“MOD”を指定し、次桁から属性値を削除するエントリ情報を記述します。8番目の項目に電話番号(telephonenumber)が記述されていた場合、その値を削除します。7番目の項目の後のカンマを削除しないように注意してください。

電話番号削除のCSVファイル

MOD,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com,(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。上記の電話番号削除例のCSVファイルの場合は、前述の“属性値追加”で使用した例のルールファイルと同じものを使用します。

◆複数の属性値から特定の属性値の削除

  次のユーザ情報エントリから、電話番号5555-0123を削除する場合のCSVファイルとルールファイルの記述例を示します。

dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
cn: User001
sn: Fujitsu
givenName: user001
uid: 100001
userPassword: u5zMEqXX
employeeNumber: 10001
mail: user001@interstage.fujitsu.com
telephonenumber: 5555-0123
telephonenumber: 5555-6789

CSVファイル

  0番目の項目に“MOD”を指定し、次桁から属性値を削除するエントリ情報を記述します。8番目の項目、および9番目の項目に電話番号(telephonenumber)が記述されており、削除する電話番号が8番目の項目にある場合、その値を削除します。8番目の項目の前後のカンマを削除しないように注意してください。

電話番号を1つ削除する場合のCSVファイル

MOD,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com,,5555-6789(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。

電話番号を1つ削除する場合のルールファイル(Attributeタグ内のみを示します。)

<Attribute>
<cn>1</cn>
<sn>2</sn>
<givenName>3</givenName>
<uid>4</uid>
<userPassword>5</userPassword>
<employeeNumber>6</employeeNumber>
<mail>7</mail>
<telephonenumber>8</telephonenumber>
<telephonenumber>9</telephonenumber>
</Attribute>

◆属性値の置換え

  次のユーザ情報エントリの、電話番号5555-6789を5555-9001に置き換える場合のCSVファイルとルールファイルの記述例を示します。

dn: cn=User001,ou=User,ou=interstage,o=fujitsu,dc=com
cn: User001
sn: Fujitsu
givenName: user001
uid: 100001
userPassword: u5zMEqXX
employeeNumber: 10001
mail: user001@interstage.fujitsu.com
telephonenumber: 5555-6789

CSVファイル

  0番目の項目に“MOD”を指定し、次桁から属性値を置き換えるエントリ情報を記述します。8番目の項目に電話番号(telephonenumber)が記述されていた場合、その値を新しい値で置き換えます。

電話番号置換えのCSVファイル

MOD,User001,Fujitsu,user001,100001,u5zMEqXX,10001,user001@interstage.fujitsu.com,5555-9001(注)

)1エントリ1行で記述します。

ルールファイル

  CSVファイルの各項目の順序に合わせて、Attributeタグを記述します。上記の電話番号置換え例のCSVファイルの場合は、前述の“属性値追加”で使用した例のルールファイルと同じものを使用します。

irepmodifyentコマンド使用例

irepmodifyent -h hostname -p 389 -D "cn=manager,ou=interstage,o=fujitsu,dc=com" -r rule.xml -i mod.csv(注)

)改行を入れないで1行で記述します。

5.5.2.3 CSVファイルを使用したエントリデータの登録

  以下に、CSVファイルを使用してエントリデータを登録する手順を示します。

  1. ユーザ情報の一元管理データベースからのCSV形式データの抽出

  2. マッピングルール(変換ルール)の設定

  3. 移入コマンドの実行

1)ユーザ情報の一元管理データベースからのCSV形式データの抽出

  データベースの機能を利用して、ユーザ情報の一元管理データベースからCSV形式のデータを取り出します。なお、データベース上のデータが証明書などのバイナリデータの場合は、テキスト(Base64)形式に変換しておく必要があります。

2)マッピングルール(変換ルール)の設定

  CSV形式データの情報とリポジトリの情報を関連付けるための、ルールファイルを設定します。

3)移入コマンドの実行

  irepmodifyentコマンドを使用して、エントリデータを登録します。
  irepmodifyentコマンドの詳細は、“リファレンスマニュアル(コマンド編)”の“Interstage ディレクトリサービス運用コマンド”を参照してください。