StrapiでCSVをエクスポート・インポートするには?JSONにも対応!「strapi-plugin-import-export-content」

Strapi

StrapiでCSV・JSON形式でのエクスポート・インポートを可能にするプラグインstrapi-plugin-import-export-contentを紹介します。

スポンサーリンク

CSVのエクスポート・インポートができるプラグイン「strapi-plugin-import-export-content」

CSVのエクスポート・インポートには「strapi-plugin-import-export-content」というプラグインが便利です。

GitHub - EdisonPeM/strapi-plugin-import-export-content: Csv and Json import / export content plugin to Strapi
Csv and Json import / export content plugin to Strapi - GitHub - EdisonPeM/strapi-plugin-import-export-content: Csv and ...

このプラグインをインストールすると、StrapiのコンテンツデータをCSV形式またはJSON形式でエクスポートしたり、逆にインポートしたりすることができるようになります。Strapiのデータを別のシステムに取り込んだり、Strapiを別のシステムに移行したりするときに便利です。

スポンサーリンク

プラグインのインストール

strapi-plugin-import-export-contentは、npmでインストールできます。

npm i strapi-plugin-import-export-content

インストールできたら、cleanオプションをつけて、フロントエンドをビルドする必要があります。

npm run build --clean

リビルドしないと、せっかくインストールしたプラグインが表示されない場合があるようです。必ずビルドしておきましょう。

Strapiでプラグインをインストールしたはずなのに表示されない場合は、フロントエンドをリビルドしてみることをおすすめします。

コンテンツをエクスポートする(移行元)

ダッシュボードに追加された[Import/Export Content]をクリックします。

[Export Data]タブを選択し、コンテンツをエクスポートします。

CSVのほか、JSONも選択できます。データベースの移行については、どちらでも行なえますので、お好みで選べばよいでしょう。エクスポートしたデータは、クリップボードにコピーしたり、ダウンロードすることができます。

コンテンツをインポートする(移行先)

エクスポートしたコンテンツをインポートします。

[import Data]タブを選択し、エクスポートしたデータを貼り付けます。[Import Source]から[Raw text]を選択すると、クリップボードから直接貼り付けることができます。

[Analyze]をクリックすると、解析結果がテーブルに表示されます。

[Import Data]ボタンをクリックすると、インポートが実行されます。

Upload as Draftをチェックしておくと、下書きとしてコンテンツがインポートされます。APIから取得できるようにするには、コンテンツページの[Publish]ボタンをクリックして、別途公開する必要があります。チェックを外しておけば、すぐに公開されます。

リレーション・メディアはどうなる?

気になっていたのがリレーションとメディア

ほかのコンテンツを参照しているデータがあった場合、エラーが出てインポートできないのか、それとも自動的に参照先のデータも作成してくれるのか不明でしたが、基本的にリレーションについてはインポートされないようです。

Analyzeのページではインポートされそうな雰囲気ですが、実際にはリレーション型のカラムはnullになっていました。リレーションについては、自分で選択する必要がありそうです。

また、メディア(画像など)についても、自動的にインポートされませんでした。

ただし、リレーションについては、エクスポート時のオプションからIDを出力するようにできるみたいです。最初にリレーションの参照先のデータをインポートしておき、あとから参照元となるデータをインポートすれば、リレーションを保ってインポートできるかもしれないです。

まとめ

StrapiにCSV・JSON形式によるインポート・エクスポート機能を追加できるプラグイン「strapi-plugin-import-export-content」について紹介してみました。

Strapiは初期状態でSQLiteをデータベースに使用しています。使っているうちにSQLiteからMySQLなどほかのデータベースに移行したくなることもあるでしょう。CSVやJSONにデータをエクスポートすることで、データベース間の違いを意識することなく、かんたんにコンテンツを移行することができます。もちろん、Excelに取り込んだり、phpMyAdminから別のシステムに取り込むことだってできちゃいます。

いろいろ使えて便利ですので、Strapiを使うときはあらかじめインストールしておくと何かと役立ちそうです。

コメント

  1. いぬっち より:

    記事参考にさせて頂きました。
    ありがとうございます。

    nodeのバージョンに寄るのかもしれませんが、オプションを以下に修正する必要がありました。

    npm run build — –clean

    -> npm run build –clean

タイトルとURLをコピーしました