2017年03月10日
開発者だけが知っている PowerCMS の隠し機能 その3 〜コマンドラインツールで行うインポート〜
前回の記事 では、大きなデータを管理画面からインポートしようとした場合にブラウザがタイムアウトしてしまうことへの対策として、インポートする CSV ファイルを分割する機能についてご紹介しました。
インポートする CSV ファイルを分割しておけば、ファイルの数だけ手間は増えますが、管理画面からインポートを実行することができます。ただ、その場合もタイムアウトの発生の可能性がゼロではなく、また、ファイルの数だけ手間もかかります。 そこで今回は、そもそもインポートを、タイムアウトの心配のないコマンドラインツールで実行する方法をご紹介します。
「インポート/エクスポート」メニューから実施できるインポートは、コマンドラインツールでも実行できる
インポート/エクスポート機能では、以下のオブジェクトに対するインポートおよびエクスポートが可能です。
- ユーザー(システムレベルのみ)
- 記事
- ウェブページ
- カテゴリ
- フォルダ
- アイテム
- カスタムフィールド
- テンプレート
これらユーザー以外のオブジェクトはすべて、コマンドラインツール import-export-object でインポートすることが可能です。
例えば記事をインポートする場合、以下のようにコマンドラインツールを実行します。
cd $MT_HOME
perl ./tools/import-export-object -type=entry -blog_id=1 -author_id=99 -file_path=/home/user/import.csv
type | 必須 | オブジェクトの種類(entry/page/category/folder/asset/field/template) |
---|---|---|
blog_id | 任意 | インポートするウェブサイト/ブログの ID |
author_id | 任意 | インポートを実行するユーザの ID(指定しない場合はシステム管理者になります) |
file_path | 任意 | インポートファイルのパス(指定しない場合は環境変数 ImportPath で指定されるディレクトリ内のファイルが対象になります) |
インポートファイルは、管理画面からインポート/エクスポート機能によってエクスポートしたファイルをベースに作成するのがよいでしょう。
こんな使い方もできます
例えば、コマンドラインツール import-export-object を cron またはタスクスケジューラによって定期実行するようにしておけば、特定のパスに設置されたファイルがあれば随時記事に追加する、といったことも可能です。PowerCMS 以外のシステムとの連携に役立ちます。
コメントを投稿する