PowerCMS ブログ

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 必須 オブジェクトの種類(author/entry/page/category/folder/asset/field/template)
blog_id 任意 インポートするウェブサイト/ブログの ID
author_id 任意 インポートを実行するユーザの ID(指定しない場合はシステム管理者になります)
file_path 任意 インポートファイルのパス(指定しない場合は環境変数 ImportPath で指定されるディレクトリ内のファイルが対象になります)

インポートファイルは、管理画面からインポート/エクスポート機能によってエクスポートしたファイルをベースに作成するのがよいでしょう。

こんな使い方もできます

例えば、コマンドラインツール import-export-object を cron またはタスクスケジューラによって定期実行するようにしておけば、特定のパスに設置されたファイルがあれば随時記事に追加する、といったことも可能です。PowerCMS 以外のシステムとの連携に役立ちます。

カテゴリー
PowerCMS 3
PowerCMS 4
サイト制作全般
技術情報

ページの先頭へ