it-swarm-ko.tech

거대한 CCK 필드 내보내기 / 가져 오기

콘텐츠 복사를 사용하여 많은 수의 CCK 필드를 내보내고 가져 오는 데 문제가 있습니다 (파일 다운로드/업로드 옵션이 필요함).

CCK 필드를 내보내고 가져올 수있는 SQL (또는 drush) 명령이 있습니까? PHP 메모리 제한, 504 게이트웨이 시간 초과 등을 우회하는 모든 것에 관심이 있습니다.

웹 서버의 CLI에서 wget <export from content copy> >data.txtwget --post-data data.txt <import via content copy>와 같은 HTTP를 계속 사용할 수 있습니다.

3
Tom

이 문제를 해결하는 방법에는 두 가지가 있습니다.

  1. 쉽고 지루한 방법으로 콘텐츠 복사를 사용하여 한 번에 몇 개의 필드 만 내보내고 PHP 오류가 발생하기 전에 선택할 수있는 최대 필드 수를 알아 내십시오. 필드가 많기 때문에 상당히 번거로울 수 있지만 권장/안전한 방법입니다.
  2. 어렵고 위험한 방법은 MySQL을 직접 엉망으로 만들고 있습니다. 이 작업을 수행하려면 약간의 SQL 지식이 있어야하며, 아무것도 잊지 않도록 엄격해야합니다.

따라서 n ° 2에 대한 약간의 설명은 다음 표에 있습니다.

  • content_type_CONTENT_TYPE_NAME,이 테이블은 CT (CT = 콘텐츠 유형)의 다중 값이 아닌 모든 필드를 저장합니다.
  • content_field_FIELD_NAME, 다중 값으로 설정된 각 필드에 대해 이러한 테이블 중 하나가 있습니다.

내부 CCK 테이블 :

  • content_node_field_instance, 각 필드의 정의를 저장합니다 (라벨, 가중치, 위젯, CT 이름 ...).
  • content_node_field 추가 설정 (필수, 다중 값, db 스토리지 ...)
  • content_group_fieldscontent_group 그룹화 기능에 대한 정보.

이제 테이블이 생겼습니다. 이제 까다로운 부분이 나옵니다.

CT 및 필드가 대상에 존재하지 않는 경우 매우 쉽습니다. CT 및 필드의 테이블을 SQL로 내보내고 CT 및 필드 이름을 사용하여 내부 CCK 테이블의 내용을 내보내십시오.

CT 또는 필드 (CT간에 필드를 공유 할 수 있음)가 대상에 존재하는 경우 변경 사항을 평가하고 이러한 변경 사항을 적용하기 위해 테이블 ​​구조를 업데이트해야합니다. 그렇게하도록 권장하지 않습니다.

행운을 빕니다.

0
tostinni