ฉันกำลังเขียนการโยกย้ายเพื่อนำเข้าข้อมูลต้นฉบับเป็นย่อหน้า
นี่คือการย้ายข้อมูลหลัก (ซึ่งกำลังทำงานอยู่)
รหัส: resource_chapter_section_text
ป้ายกำกับ: นำเข้าเนื้อหาจากคอลัมน์ resource.body ในฐานข้อมูลต้นทางเป็นย่อหน้า chapter_section_text
การโยกย้ายกลุ่ม: redacted_web
แหล่งที่มา:
ปลั๊กอิน: resource_chapter_section_text
คีย์: migrate_web
กระบวนการ:
# ค่าจริงจะถูกวางไว้ที่นี่โดยการย้ายข้อมูล resource_chapter_section_text_content
# เราต้องทำในรอบที่สองเพื่อหลีกเลี่ยงการสร้างการพึ่งพาแบบวงกลม
field_text/ค่า:
ปลั๊กอิน: default_value
default_value: 'ตัวยึดตำแหน่ง'
field_text/รูปแบบ:
ปลั๊กอิน: default_value
default_value: 'ข้อความธรรมดา'
ปลายทาง:
ปลั๊กอิน: entity_reference_revisions:ย่อหน้า
default_bundle: chapter_section_text
การพึ่งพา:
บังคับใช้:
โมดูล:
- redacted_migration
โปรดทราบว่า field_text
กำลังเติมด้วยค่าตัวยึดตำแหน่ง นั่นเป็นเพราะข้อมูลต้นทางสำหรับฟิลด์นั้นจำเป็นต้องแปลงด้วยวิธีบางอย่างก่อนที่ฉันจะสามารถนำเข้าได้ เพื่อหลีกเลี่ยงการพึ่งพาแบบวงกลม การเปลี่ยนแปลงนี้ต้องทำหลังจากทั้งหมด chapter_section_text
นำเข้าย่อหน้าแล้ว
ดังนั้น ฉันจึงพยายามเขียนการย้ายข้อมูลครั้งที่สอง ซึ่งจะดำเนินการผ่านตารางต้นฉบับเดียวกันเป็นครั้งที่สอง และจะอัปเดตย่อหน้าที่สร้างขึ้นโดยการย้ายข้อมูลครั้งแรก นี่คือการย้ายถิ่นฐาน
รหัส: resource_chapter_section_text_content
ป้ายกำกับ: แปลงเนื้อหาของย่อหน้า resource_chapter_section_text จาก pseudo-Markdown เป็น HTML และอัปเดต URL ของลิงก์
การโยกย้ายกลุ่ม: redacted_web
แหล่งที่มา:
ปลั๊กอิน: resource_chapter_section_text_content
คีย์: migrate_web
กระบวนการ:
รหัส:
ปลั๊กอิน: การโยกย้าย_lookup
การโยกย้าย: resource_chapter_section_text
ที่มา: section_id
field_text/value: content_converted
field_text/รูปแบบ:
ปลั๊กอิน: default_value
default_value: 'full_html'
ปลายทาง:
ปลั๊กอิน: entity_reference_revisions:ย่อหน้า
default_bundle: chapter_section_text
overwrite_properties:
- field_text/ค่า
- field_text/รูปแบบ
การโยกย้าย_การพึ่งพา:
ที่จำเป็น:
- resource_chapter_section_text
- collection_term
- document_node
- ธีม
- ทรัพยากร
การพึ่งพา:
บังคับใช้:
โมดูล:
- redacted_migration
อย่างที่คุณเห็น ฉันกำลังระบุรหัสย่อหน้าที่มีอยู่และใช้ ปลายทาง overwrite_properties
เพื่อระบุฟิลด์ที่จะปรับปรุง
ฉันใช้เทคนิคเดียวกันนี้สำเร็จแล้วในการย้ายข้อมูลครั้งอื่นเพื่ออัปเดตโหนดที่มีอยู่ อย่างไรก็ตาม มันใช้งานไม่ได้ที่นี่ การย้ายข้อมูลดูเหมือนจะพยายามสร้างย่อหน้าใหม่แทน ฉันได้รับข้อผิดพลาดนี้:
[ข้อผิดพลาด] Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: การละเมิดข้อจำกัดด้านความสมบูรณ์: 1062
รายการซ้ำ '3829' สำหรับคีย์ 'PRIMARY': INSERT INTO "paragraphs_item" ("id", "revision_id", "type", "uuid", "langcode") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3 , :db_insert_placeholder_4);
เป็นไปได้ไหมที่จะทำเช่นนี้กับเอนทิตีย่อหน้า