4.13.6 CSV・Excelの列データ取得
機能
この部品は,WindowsまたはUNIX環境で,CSV(Comma Separated Values)ファイルまたは,Microsoft社のExcelで作成したExcelシートから指定した列のデータをすべて取得し出力プロパティに設定します。
Windows環境の場合はCSVファイルまたはExcelファイルから,UNIX環境の場合はCSVファイルから,データを取得します。
次を満たすファイルのデータの取得をサポートします。
【CSVファイルの場合】
・拡張子がcsvのテキストファイルであること。
・列名が必要な場合は,ファイルの1行目には半角コンマ区切りで列名が記載されていること。列名が不要の場合は列名の記載は必要ありません。
・ファイルの2行目以降には読み取り対象のデータが半角コンマ(,)で区切られて記載されていること。なお,列名の記載有無に関わらず,データの読み取り開始行は2行目からとなります。
・Windows環境の場合は,文字コードがMS932で記述され,改行コードがCR+LFであること。UNIX環境の場合は,ユーザーの環境変数[LANG]で指定している文字コードで記述され,改行コードがLFであること。
【Excelファイルの場合】
・拡張子がxlsのファイル(「Excel97〜2003ブック」として保存されたExcelフォーマット),またはxlsx,xlsm(Excelブック,Excelマクロ有効ブック)のファイルであること。
・必ず列名が記載されていること。1行目以降で最初に記述がある行が列名となる。
・列名が記載されている行の次の行以降に列名に対応する値が記載されていること。
ファイルの記述例を次に記載します。
【記述例1】
ホスト名
hostVM001
hostVM002
【記述例2】
ホスト名,コメント
hostVM001,#Comment1
hostVM002,#Comment2
読み込んだフィールドには次のチェックを行います。どれかの条件に当てはまると,部品は異常終了します。
(a)フィールドの文字列長が1024文字より大きい
(b)フィールドに次の特殊記号を含む
「,」(Windows環境の場合),「<」,「>」,「|」,「;」,「&」,両端以外の「"」および末尾の「¥」
なおフィールドのデータが空の場合,無視して次の行を読み取ります。
(c)フィールドに制御文字(0x00〜0x1f)を含む
出力情報は指定した列ごとに出力します。どれかの列でデータ行数が99件を超えるか,「(フィールドの文字数の合計値)+ データ行数」が1017文字を超えると,部品は異常終了します。
実行対象サーバのOSがWindowsの場合,この部品の実行にはAdministratorユーザ(ビルトインAdministratorアカウント)が必要です。実行対象サーバにAdministratorユーザ(ビルトインAdministratorアカウント)が存在しない場合,または,無効の場合,システムアカウントで実行を行う部品「CSV・Excelの列データ取得(SYSTEM)」を実行してください。
利用場面
・管理情報を記載したCSV/Excelファイルからデータを取得し,サービスの入力値として利用できます。
・CSV/Excelファイルのキー情報となる列をこの部品で取得し,繰り返し部品,CSV・Excelの行データ取得部品への入力とすることで,ファイルに記載されたすべての行について特定の処理を実行できます。
前提条件
【実行対象サーバ内前提製品】/【実行対象サーバの稼働OS】の最新のサポート状況については,リリースノートを参照してください。
また、OSおよび製品について略称を用いています。対象とするOSおよび製品については「はじめに」を参照してください。
【実行対象サーバ内前提製品】
(1)データ取得対象にExcelブック,Excelマクロ有効ブックを指定する場合,次に示すMicrosoft社のプログラムのインストールが必要です。(Windows環境の場合)
・Microsoft Access データベース エンジン
【実行対象サーバの稼働OS】
(1) Windows Server
(2) Red Hat Enterprise Linux Server
(3) Oracle Linux
【実行対象サーバ内前提製品の使用条件】
なし。
注意事項
・Windows環境の場合の注意事項
(1) ODBCドライバの制限によって,ファイル名には「[」,「]」,「!」は使用できません。
(2) Excelファイルのセルが結合されている場合,数式がエラーとなっている場合は取得される値が空になります。また,書き込みパスワードが設定されている場合は,部品は異常終了します。読み取り対象のファイルからはこれらの状態を取り除いてください。
(3) 読み取る列は,文字列型データと数値型データを混在させないでください。混在していると,ODBCドライバの仕様によって,正常に値を取得できない場合があります。
(a)数値型データとは次の形式の文字列のことです。
符号付き整数値(10進数) 例:-12345
固定小数点数(10進数) 例:3.1415
浮動小数点数(10進数) 例:6.543E+10
(b)文字列型データとは上の数値型以外の形式の文字列のことです。
(4) 読み取り対象のファイルから異なるデータ型が混在する列を取得する場合は,次の対処が必要です。
・Excelファイルの場合は数値型データの先頭に「'」を付けてください。
・CSVファイルの場合は数値型データを「"」で囲んでください。
(5) 読み取り対象がCSVファイルである場合,IPアドレスは「"」で囲んでください。「"」で囲まない場合,数値型データとして誤認識され,正常に値を取得できないことがあります。
(6) 読み取り対象ファイルがExcelファイルの場合,セルに記述されたデータのデータ型によっては,表示されている値と実際に取得される値が異なる場合があります。次のデータ型のデータを記述している場合はご注意ください。
(a) Boolean型(True/False)
表示される値:TRUE/FALSE
セルに記述されている値:TRUE/FALSE
実際に取得される値:True/False
(b) 日付データ
表示される値:mm月dd日
セルに記述されている値:yyyy/mm/dd
実際に取得される値:yyyy/mm/dd
(c) 時刻データ
表示される値:hh:mm
セルに記述されている値:hh:mm:ss
実際に取得される値:hh:mm:ss
(d) パーセント
表示される値:〜%(例:10%)
セルに記述されている値:〜%(例:10%)
実際に取得される値:0.〜(例:0.1)
(e) 数式
表示される値:(数式の結果)
セルに記述されている値:(数式)
実際に取得される値:(数式の結果)
(a)(d)(e)のデータをセルに記述されている値のまま取得したい場合は先頭に「'」を付けてください。
なお,読み取り対象ファイルがCSVファイルの場合は記述した値をそのまま取得することができます。
(7) (6)の型のデータを記述する場合,その列の列名を除いたデータが1種類の型のデータだけになるように記述してください。複数の型のデータが1列に混在している場合,データを取得できない場合があります。
(8) 読み取り対象の列番号には255以内の整数値を指定してください。256以上の値を指定すると部品は異常終了します。途中の空白列も列数に含まれますのでご注意ください。
(9) ファイル読み込み時のリトライ回数には0以上32767以下の整数値を指定してください。範囲外の値を指定すると部品は異常終了します。
(10) ファイル読み込み時のリトライ間隔には1以上60以下の整数値を指定してください。範囲外の値を指定すると部品は異常終了します。
(11) 読み取り対象ファイルのデータの途中に空白行がある場合,空白行も行数としてカウントされます。データが記述された行が99行以内であっても,途中の空白行を含めた行数が100以上となる場合,部品は異常終了するのでご注意ください。
(12) CSVファイルの場合,フィールドの文字列長は255バイト以内にしてください。256バイト以上だった場合,ODBCドライバが正常に値を取得できずに,部品が異常終了する場合があります。
(13) この部品を同一ファイルに対して同時に実行した場合,ファイルのアクセスに失敗する場合があります。この場合,リトライ回数とリトライ間隔を調整して,エラーを回避できるまでリトライを実施してください。
(14) Excelファイルから取得したデータ内のMS932で表示できない文字は,「?」に置換します。
・UNIX環境の場合の注意事項
(1) 読み取り対象の列番号には255以内の整数値を指定してください。256以上の値を指定すると部品は異常終了します。途中の空白列も列数に含まれますのでご注意ください。
(2) 読み取り対象ファイルのデータの途中に空白行がある場合,空白行も行数としてカウントされます。データが記述された行が99行以内であっても,途中の空白行を含めた行数が100以上となる場合,部品は異常終了するのでご注意ください。
(3) CSVファイルのデータには「,」は使用できません。使用した場合,列を正しく区切ることができないため,データを取得できません。
(4) LC_ALLやLC_MESSAGESなどLANGより上位のロケール環境変数が設定されている時,上位のロケール環境変数が優先されてしまうため部品を実行する際に,LC_ALLやLC_MESSAGESなどの上位のロケール環境変数を解除するか,LANG環境変数と同一の値に変更してください。
実行権限
ビルトイン Administrator
バージョン
02.00.01
部品のタグ
Gather OS information,Windows,Linux
タスクログに表示される部品の名称
osReadCSVExcelFileColumn
戻り値
戻り値 |
説明 |
---|---|
0 |
正常 |
11 |
異常(ユーザーミス) 定義ファイル内容の不正 |
12 |
異常(ユーザーミス) プロパティ不正 |
14 |
異常(ユーザーミス) ファイルアクセス不可 |
27 |
異常(エラー内容はタスクログで確認) |
41 |
異常(部品内でエラーを検知) プロパティ未入力(部品スクリプトでエラーを検知) |
プロパティ一覧
プロパティ一覧を次の表に示します。
プロパティキー |
プロパティ名 |
説明 |
デフォルト値 |
入出力種別 |
必須区分 |
---|---|---|---|---|---|
plugin.destinationHost |
実行対象サーバのホスト名 |
この部品を実行するサーバのホスト名またはIPアドレスを指定します。IPv6アドレスには対応していません。 |
− |
入力 |
○ |
common.fileName |
ファイル名 |
ファイル名を指定します。 |
− |
入力 |
○ |
common.sheetName |
EXCELファイルのシート名 |
EXCELファイルのシート名を指定します。CSVファイルの場合は,指定不要です。 |
Sheet1 |
入力 |
△ |
odbc.Column1 |
列番号1 |
取得するデータの列番号を指定します。 |
− |
入力 |
○ |
odbc.Column2 |
列番号2 |
取得するデータの列番号を指定します。 |
− |
入力 |
△ |
odbc.Column3 |
列番号3 |
取得するデータの列番号を指定します。 |
− |
入力 |
△ |
odbc.Column4 |
列番号4 |
取得するデータの列番号を指定します。 |
− |
入力 |
△ |
odbc.Column5 |
列番号5 |
取得するデータの列番号を指定します。 |
− |
入力 |
△ |
odbc.fileOpenRetryCount |
ファイル読み込み時のリトライ回数:Windows固有 |
ファイルの読み込みに失敗した場合のリトライ回数を指定します(Windowsの場合だけ)。ファイル読み込み時のリトライ間隔と組み合わせて最大待ち時間となります。"0"を指定した場合はリトライしません。 |
20 |
入力 |
○ |
odbc.fileOpenRetryInterval |
ファイル読み込み時のリトライ間隔:Windows固有 |
ファイルの読み込みに失敗した場合のリトライ間隔を秒単位で指定します(Windowsの場合だけ)。 |
5 |
入力 |
○ |
odbc.OutputValue1 |
データ1 |
取得したデータを設定します。 |
− |
出力 |
△ |
odbc.OutputValue2 |
データ2 |
取得したデータを設定します。 |
− |
出力 |
△ |
odbc.OutputValue3 |
データ3 |
取得したデータを設定します。 |
− |
出力 |
△ |
odbc.OutputValue4 |
データ4 |
取得したデータを設定します。 |
− |
出力 |
△ |
odbc.OutputValue5 |
データ5 |
取得したデータを設定します。 |
− |
出力 |
△ |
common.returnValue |
部品の戻り値 |
この部品の戻り値が格納されます。 |
− |
出力 |
△ |