ftp
FTP プロファイルを使用してリモート FTP サーバーのファイルリストを照会したり、ファイルの内容を読み込んだり、クエリ結果をファイルとしてアップロードします。
コマンドプロパティ
| 項目 | 説明 |
|---|---|
| コマンドタイプ | ドライバークエリまたは加工クエリ |
| 必要な権限 | FTP プロファイルの使用権限 |
| ライセンス使用量 | 集計あり |
| 並列実行 | 非対応 |
| 分散実行 | 非対応 |
構文
ファイルリストを照会するには
ファイルの内容を読み込むには
ファイルをアップロードするには
オプション
format={text|csv|tsv|json}- ファイル形式(デフォルト:
text)
text: 1行を1つのレコードとして読み込むか記録します。csv: CSV 形式でファイルを読み込むか記録します。tsv: タブ区切り形式でファイルを読み込むか記録します。json: JSON 形式でファイルを読み込むか記録します。
offset=LONGcat動作でスキップするレコード数。0 以上の整数を指定します。(デフォルト:0)limit=LONGcat動作で読み込む最大レコード数。0 以上の整数を指定します。encoding=STR- ファイルエンコーディング(デフォルト:
utf-8) header=BOOLcat動作で CSV、TSV 形式ファイルの最初の行をヘッダーとして使用するかどうか(デフォルト:f)fields=FIELD,...put動作で記録するフィールドのリスト。カンマ(,)で区切ります。未指定の場合はlineフィールドを記録します。JSON 形式で未指定の場合はすべてのフィールドを記録します。append=BOOLput動作で既存のファイルに内容を追記するかどうか。overwriteオプションと同時には使用できません。(デフォルト:f)overwrite=BOOLput動作で既存のファイルを上書きするかどうか。appendオプションと同時には使用できません。(デフォルト:f)
ターゲット
PROFILE- FTP プロファイル名。システムに登録された FTP 接続プロファイルを指定します。
PATH- FTP サーバーのファイルまたはディレクトリのパス。
cat動作ではワイルドカード(*)をファイル名に使用できます。
出力フィールド
ls 動作の出力フィールド:
| フィールド | 型 | 説明 |
|---|---|---|
| type | string | 項目の種類。dir または file |
| name | string | ファイルまたはディレクトリ名 |
| file_size | long | ファイルサイズ(バイト) |
| owner | string | ファイルの所有者 |
| group | string | ファイルのグループ |
| modified_at | タイムスタンプ | 最終更新時刻 |
cat 動作の出力フィールドは format オプションによって異なります。text 形式では line フィールドに1行のテキストを割り当てます。csv、tsv 形式ではヘッダーまたは列インデックス基準のフィールドを割り当てます。json 形式では JSON キー・バリューのペアをフィールドとして割り当てます。すべての形式で _file フィールドに元のファイルパスを割り当てます。
エラーコード
パースエラー
| エラーコード | メッセージ | 説明 |
|---|---|---|
| 40001 | 不正な ftp コマンド構文です。ftp [プロファイル] [オペレーター] [拡張オプション] | コマンド構文が正しくない場合 |
| 40002 | FTP プロファイルが存在しません。 | 指定した FTP プロファイルが登録されていない場合 |
| 40003 | FTP プロファイルを使用する権限がありません。 | 現在のユーザーがそのプロファイルの使用権限を持っていない場合 |
| 40004 | 無効な ftp offset オプションです。0 以上の整数を使用してください。 | offset 値が整数でない場合 |
| 40005 | 無効な ftp limit オプションです。0 以上の整数を使用してください。 | limit 値が整数でない場合 |
| 40006 | 無効な ftp コマンドオペレーターです。 | 動作が ls、cat、put のいずれでもない場合 |
| 40007 | 無効な ftp ファイル形式です。 | format 値が text、csv、tsv、json のいずれでもない場合 |
| 40008 | 不正なエンコーディングです。 | サポートされていないエンコーディングを指定した場合 |
| 40012 | ftp put コマンドで overwrite と append オプションを同時に使用することはできません。 | put 動作で overwrite と append を同時に指定した場合 |
ランタイムエラー
| エラーコード | メッセージ | 説明 | 後処理動作 |
|---|---|---|---|
| 40009 | ファイル名以外にワイルドカードは使用できません。 | パスのディレクトリ部分にワイルドカードを使用した場合 | クエリを中断します。 |
| 40010 | ftp の照会対象がディレクトリです。 | cat 動作の対象がディレクトリの場合 | クエリを中断します。 |
| 40011 | ftp コマンドを実行できません。 | FTP サーバーへの接続またはファイル処理中にエラーが発生した場合 | FTP 接続を終了します。 |
| 40013 | ftp put コマンドで overwrite オプションなしにファイルを上書きすることはできません。 | put 動作で既存のファイルがあるが overwrite が無効な場合 | クエリを中断します。 |
| 40014 | ftp put コマンドで記録するフィールドリストとすでにファイルに記録されているフィールドリストが一致しません。 | put 動作で append 時に既存のヘッダーとフィールドが異なる場合 | クエリを中断します。 |
説明
ftp コマンドは、システムに登録された FTP プロファイルを使用してリモート FTP サーバーと通信します。3種類の動作をサポートします。
ls: 指定したパスのファイルおよびディレクトリのリストを照会します。ディレクトリを先に、ファイルを後に名前順で並べ替えて出力します。ls動作はドライバークエリとして動作します。cat: 指定したパスのファイルの内容を読み込み、レコードに変換します。ワイルドカード(*)をファイル名に使用できます。cat動作はドライバークエリとして動作します。put: 入力レコードを指定したパスのファイルに記録します。put動作は加工クエリとして動作し、入力レコードをそのまま次のコマンドに渡します。put動作は制御ノードで実行されます(reducer)。
プロファイル名とファイルパスにクエリパラメーター(${})を使用できます。
使用例
これらの使用例で参照する WEB_APACHE_SAMPLE テーブルを準備するには、クエリ実習用データを参照してください。
-
FTP サーバーのファイルリストを照会
ftp myprofile ls /data/logsmyprofileFTP プロファイルを使用して/data/logsディレクトリのファイルリストを照会します。 -
FTP サーバーからテキストファイルを読み込む
ftp myprofile cat /data/logs/access.log/data/logs/access.logファイルをテキスト形式で読み込み、1行ずつレコードに変換します。 -
CSV ファイルをヘッダーとともに読み込む
ftp myprofile cat format=csv header=t /data/logs/report.csvCSV ファイルの最初の行をフィールド名として使用してファイルを読み込みます。
-
ワイルドカードを使用して複数の JSON ファイルを読み込む
ftp myprofile cat format=json /data/logs/*.json/data/logs/ディレクトリ内の拡張子が.jsonのすべてのファイルを読み込みます。 -
クエリ結果を FTP サーバーに CSV ファイルとしてアップロード
table WEB_APACHE_SAMPLE | stats count by method | ftp myprofile put format=csv fields=method,count /data/report.csvWeb アクセスログを HTTP メソッドごとに集計した結果を CSV 形式で FTP サーバーにアップロードします。
-
既存のファイルに内容を追記
table WEB_APACHE_SAMPLE | fields src_ip, method, uri, status, bytes | ftp myprofile put format=json append=t /data/logs/combined.jsonJSON 形式で既存のファイルに内容を追記します。
互換性
ftp コマンドは Sonar 4.0以前のバージョンから提供されています。