Score:0

Sql Migrate - ตัวอย่างการทำงาน

ธง cn

โอเค ฉันแค่ใช้เวลา 8 ชั่วโมงกับ โมดูลการโยกย้าย. ฉันไม่พบตัวอย่างการทำงานเพียงตัวอย่างเดียวสำหรับการย้ายข้อมูล sql แม้แต่เอกสารของ Drupal เองก็ยังมีสถานะ "ล้าสมัย"

ฉันกำลังพยายามนำเข้าเฉพาะชื่อ - ดังนั้นมันควรจะค่อนข้างตรงไปตรงมา น่าเสียดาย ฉันไม่พบข้อผิดพลาดเมื่อพยายามนำเข้าการกำหนดค่าหรือโดยปลั๊กอินต้นทาง

test_migrate_er.info.yml - (เปิดใช้งานโมดูลแล้ว)

ชื่อ: ทดสอบการโยกย้าย ER
ประเภท: โมดูล
คำอธิบาย: 'ตัวนำเข้าสำหรับโหนดข่าวผ่าน sql ("ทดสอบ" // Typo 3)'
แพ็คเกจ: ทดสอบ
เวอร์ชัน: เวอร์ชัน
core_version_requirement: ^8.8.0 || ^9.0
โครงการ: 'test_migrate_er'

การพึ่งพา:
  - drupal: โยกย้าย
  - drupal:migrate_tools
  - drupal:migrate_plus

migrate_plus.migration_group.test_migrate_content.yml (นำเข้าผ่าน "drush cim")

รหัส: 366085cb-4cea-49d1-84a0-534afd31b114
รหัสภาษา: th
สถานะ: จริง
การพึ่งพา: { }
รหัส: test_migrate_content
ป้ายกำกับ:"ทดสอบการนำเข้า"
คำอธิบาย: null
source_type: null
โมดูล: null
shared_configuration: null
แหล่งที่มา:
  ปลั๊กอิน: test_source
  คีย์: โยกย้าย

การเชื่อมต่อฐานข้อมูลถูกตั้งค่าใน local.settings.php (ใช้ซอร์สคีย์)

$databases['migrate']['default'] = [...]

เมื่อนำเข้าการกำหนดค่า thr ทุกอย่างดูดี - ไม่มีข้อผิดพลาด ... แต่เมื่อส่งออกไฟล์ แหล่งที่มา บิตรวมถึงองค์ประกอบย่อย (ปลั๊กอินและคีย์) จะหายไปราวกับว่าเป็นแอตทริบิวต์ที่ไม่ถูกต้อง นั่นจะอธิบายว่าทำไมปลั๊กอิน / การโยกย้ายจึงไม่แสดงเมื่อทำการทดสอบผ่าน นางกลอง. ดูเหมือนว่าตัวแยกวิเคราะห์การกำหนดค่าจะเพิกเฉย

ปลั๊กอินต้นทาง (/web/modules/custom/test_migrate_er/src/Plugin/migrate/source/News.php. -- เปิดใช้งานโมดูล "test_migrate_er")

<?php

เนมสเปซ Drupal\test_migrate_er\Plugin\migrate\source;

ใช้ Drupal\migrate\Plugin\migrate\source\SqlBase
ใช้ Drupal\migrate\Row;

/**
 * ตัวอย่างที่เรียบง่ายสำหรับปลั๊กอินซอร์ส SqlBase
 *
 * @MigrateSource(
 * id = "test_source",
 * source_module = "test_migrate_er",
 * )
 */
ข่าวคลาสขยาย SqlBase {

  /**
   * {@inheritdoc}
   */
  แบบสอบถามฟังก์ชันสาธารณะ () {
    // สืบค้นข้อมูลจากตาราง 'curling_games'
    $query = $this->select('tx_news_domain_model_news_copy', 'n')
      ->ฟิลด์ ('n', [
        'อูด',
        'ตราประทับ',
        'เครเดต',
        'วันเวลา',
        'ชื่อ',
        'ทีเซอร์',
        'เนื้อความ'
      ]);
    ส่งคืน $query;
  }



  /**
   * {@inheritdoc}
   */
  ฟิลด์ฟังก์ชันสาธารณะ () {
    $ฟิลด์ = [
      'uid' => $this->t('uid' ),
      'tstamp' => $this->t('tstamp' ),
      'crdate' => $this->t('crdate' ),
      'datetime' => $this->t('datetime' ),
      'title' => $this->t('title' ),
      'ทีเซอร์' => $this->t('ทีเซอร์' ),
      'bodytext' => $this->t('bodytext' ),
    ];
    ส่งคืนฟิลด์ $;
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getIds () {
    กลับ [
      'uid' => [
        'type' => 'จำนวนเต็ม',
        'นามแฝง' => 'n',
      ]
    ];
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ prepareRow (แถว $ แถว) {
    // ตัวอย่างนี้แสดงวิธีการเพิ่มคุณสมบัติของแหล่งที่มา
    // เตรียมแถว () วันที่ของแหล่งที่มาถูกจัดเก็บเป็น 2017-12-17
    // และเวลา 16:00 น. Drupal 8 บันทึกฟิลด์วันที่และเวลา
    // ในรูปแบบ ISO8601 2017-01-15T16:00:00 บน UTC
    // เราเชื่อมโยงวันที่และเวลาของแหล่งที่มาและเพิ่มวินาที
    // ผลลัพธ์เดียวกันสามารถทำได้โดยใช้ 'concat'
    // และ 'format_date' ประมวลผลปลั๊กอินในการย้ายข้อมูล
    // คำนิยาม.
// $date = $row->getSourceProperty('วันที่');
// $time = $row->getSourceProperty('เวลา');
// $datetime = $วันที่ 'ท' . $เวลา ':00';
// $row->setSourceProperty('วันที่เวลา', $datetime);
    ส่งคืนพาเรนต์::prepareRow($row);
  }
}

คุณพบโค้ดตัวอย่าง "การโยกย้าย" จำนวนมาก ... ไม่ใช่ของเป้าหมาย sql และไม่ใช่ของเหล่านั้นที่ดูเหมือนจะเป็นปัจจุบัน ฉันสงสัยว่ามีใครรู้ตัวอย่างการทำงานหรือเอกสารประกอบที่ถูกต้องหรือไม่ นั่นจะทำให้วันต่อๆ ไปสนุกขึ้นมาก :)

ขอบคุณที่ช่วยเหลือ

cn flag
เพียงเพื่อแยกแยะว่ากลุ่ม YAML อยู่ในคำถามแบบคำต่อคำหรือไม่ `ป้ายกำกับ:"TEST IMPORT"` ไม่ถูกต้อง (ต้องการเว้นวรรค)
Kevin avatar
in flag
ตัวอย่างการโยกย้ายจำนวนมากกำหนดเป้าหมายไปที่ SQL โมดูลการโยกย้ายและ migrate_plus มีตัวอย่างมากมายในการทำคำนิยามและปลั๊กอินต้นทางแบบกำหนดเองประเภทต่างๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา