💬
Drupalのコンテンツの一括削除の方法
概要
Drupalのコンテンツの一括削除の方法を調べたので、その備忘録です。以下の記事が参考になりました。
以下の3つの方法が紹介されていました。
- Drupal コア UI の使用 (Using Drupal Core UI)
- Drush の使用 (Using Drush)
- ビューの一括操作 (VBO) の使用 (Using Drupal Views Bulk Operations (VBO))
Drupal コア UI の使用
以下、日本語訳です。
小さな Drupal サイトがあり、削除するノードが約 300 未満の場合は、この方法を使用する必要があります。これは、Drupal コアの UI を使用すると、デフォルトで一度に 50 ノードしか削除できないためです。サイトが大きくなると、これは面倒になります。
Drush の使用
以下、日本語訳です。
コマンド ラインを使用すると、Drush を使用できます。これが推奨される方法です。
例えば以下では、記事コンテンツ タイプのすべてのノードを削除します。
drush entity:delete node --bundle=article
ただ、上記のサイトにも記載がありましたが、PHP メモリ制限にひっかかることがあるようです。Amazon Lightsail上に立てた512MBメモリの環境において、5,000件のコンテンツの一括削除を試みたところ、以下のように制限に引っかかってしまいました。ただし、再度同じコマンドを実行することで、無事に一括削除ができました。
drush entity:delete node --bundle=article
2550/5057 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░] 50%
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in /opt/bitnami/drupal/core/lib/Drupal/Core/TypedData/Plugin/DataType/ItemList.php on line 76
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32768 bytes) in /opt/bitnami/drupal/vendor/symfony/http-foundation/Response.php on line 895
specify the chunk/batch size
デフォルトでは50件ずつ処理されますが、--chunks=100のように引数を加えることで、バッチサイズを変更できました。
ビューの一括操作 (VBO) の使用
以下のモジュールを使用するようです。今回は試しませんでしたが、いずれ試してみたいと思います。
まとめ
当たり前かもしれませんが、今回の一括削除操作によって、「Elasticsearch Connector」でつながっているElasticsearch(具体的にはAmazon OpenSearch Service)上のアイテムも削除されました。
Drushのような機能が使えるのは、OmekaなどのCMSと比較して、便利だと思いました。
Discussion