web-dev-qa-db-ja.com

巨大なCCKフィールドのエクスポート/インポート

コンテンツコピーを使用して多数のCCKフィールドをエクスポートおよびインポートする際に問題が発生しています(ファイルのダウンロード/アップロードオプションが必要です)。

CCKフィールドをエクスポートおよびインポートできるSQL(またはDrush)コマンドはありますか? PHPメモリの制限、504ゲートウェイのタイムアウト、その他何もしないことを回避することに興味があります。

多分私はまだwget <export from content copy> >data.txtwget --post-data data.txt <import via content copy>のようなウェブサーバーのCLIからHTTPを使うことができました。

3
Tom

これを解決するには2つの方法があります...

  1. 簡単で面倒な方法です。コンテンツコピーを使用して一度に少数のフィールドのみをエクスポートし、phpエラーが発生する前に選択できるフィールドの最大数を調べてください。多くのフィールドがあるため、これはかなり扱いにくいかもしれませんが、これは推奨される/安全な方法です。
  2. 難しい/危険な方法は、MySQLを直接混乱させることです。これを行うには、少しSQLに精通している必要があり、何も忘れないように厳密である必要があります。

N°2について少し説明すると、探している情報は次の表にあります。

  • content_type_CONTENT_TYPE_NAME、このテーブルには、CTのすべての非値フィールドが格納されます(CT =コンテンツタイプ)。
  • content_field_FIELD_NAME、複数の値に設定されているフィールドごとに、これらのテーブルが1つあります。

内部CCKテーブル:

  • content_node_field_instance、各フィールドの定義を格納します(ラベル、重み、ウィジェット、CTの名前...)
  • content_node_field追加設定(必須、複数値、DBストレージ...)
  • content_group_fieldsおよびcontent_groupグループ化機能に関する情報。

さあ、これであなたはテーブルを手に入れました。次はトリッキーな部分です。

CTとフィールドが宛先に存在しない場合、非常に簡単です。CTのテーブルとフィールドをSQLにエクスポートし、CTとフィールド名を使用して内部CCKテーブルのコンテンツをエクスポートするだけです。

CTまたは任意のフィールド(フィールドはCT間で共有できることを忘れないでください)が宛先に存在する場合、変更を評価し、これらの変更を適用するためにテーブル構造を更新する必要があります。そうすることをお勧めしません。

幸運を。

0
tostinni