您在這裡

Drupal網站node内容轉到table中去

James Qi 在 2018年10月12日 - 16:41 發表

  我們從去年開始新做的Drupal網站基本上沒有再采用新建内容類型的方式了,不使用node頁面,而是采用在MySQL中自建table的方式,這樣在數據量大的情況下,對于速度的提升很明顯。

  但涉及到老的網站已經用node建立了很多頁面,想要改為table的方式,就需要讀取node中的信息,轉移到table中去,可以采用php調用Drupal API,但效率不高,數據量大的情況下需要很長時間運行,後來嘗試用MySQL語句,也可以順利進行,現在來補充做個筆記,下面是Drupal 7網站遷移數據的MySQL語句示例:

INSERT INTO `zip_code`(`nid`) SELECT  `nid` from `node` WHERE `type` = "zip_code";

UPDATE `zip_code`
   SET `zip_code`.`zipcodeplus4`=(
select `node`.`title`from `node`
 where `node`.`nid` = `zip_code`.`nid`);
 
 UPDATE `zip_code`
   SET `zip_code`.`zipcode`=(
select `field_data_field_zipcode`.`field_zipcode_value`from `field_data_field_zipcode`
 where `field_data_field_zipcode`.`entity_id` = `zip_code`.`nid`);

UPDATE `zip_code`
   SET `zip_code`.`plus4`=(
select `field_data_field_plus4`.`field_plus4_value`from `field_data_field_plus4`
 where `field_data_field_plus4`.`entity_id` = `zip_code`.`nid`);
 
UPDATE `zip_code`
   SET `zip_code`.`range`=(
select `field_data_field_range`.`field_range_value`from `field_data_field_range`
 where `field_data_field_range`.`entity_id` = `zip_code`.`nid`);
 
UPDATE `zip_code`
   SET `zip_code`.`cityname`=(
select `field_data_field_cityname`.`field_cityname_value`from `field_data_field_cityname`
 where `field_data_field_cityname`.`entity_id` = `zip_code`.`nid`); 

  可以用drush的sql-query來批量運行,速度很快。

自由标簽:

回應

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。