Puncte:0

Sql Migrate - exemplu de lucru

drapel cn

Ok, petrec doar 8 ore cu modul de migrare. Nu am reușit să găsesc un singur exemplu de lucru pentru migrarea datelor SQL. Chiar și documentația proprie a lui Drupal are statul „învechit”.

Încerc să import doar titluri - așa că ar trebui să fie destul de simplu. Din păcate, nici măcar nu primesc o eroare când încerc să import configurația și nici prin pluginul sursă.

test_migrate_er.info.yml - (modulul este activat)

nume: Test Migrate ER
tip: modul
descriere: „Importator pentru noduri de știri prin sql („test” // Typo 3)”
pachet: test
versiune: VERSIUNE
cerinta_versiune_core: ^8.8.0 || ^9,0
proiect: „test_migrate_er”

dependențe:
  - drupal:migrate
  - drupal:migrate_tools
  - drupal:migrate_plus

migrate_plus.migration_group.test_migrate_content.yml (acesta este importat prin „drush cim”)

uuid: 366085cb-4cea-49d1-84a0-534afd31b114
langcode: en
stare: adevărat
dependențe: { }
id: test_migrate_content
label:„TEST IMPORT”
descriere: nul
tip_sursă: nul
modul: nul
shared_configuration: null
sursă:
  plugin: test_source
  cheie: migra

Conexiunea la baza de date este setată în local.settings.php (folosește cheia sursă)

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

Când se importă configurația thr, totul pare bine - fără erori... dar atunci când o exporti sursă bit inclusiv subelementele (plugin și cheie) dispar ca și cum ar fi atribute nevalide. Acest lucru ar explica, de asemenea, de ce pluginul / migrarea nu este afișată niciodată atunci când se testează prin drush ms. Se pare că analizatorul de configurare îl ignoră.

Plugin sursă (/web/modules/custom/test_migrate_er/src/Plugin/migrate/source/News.php. -- modulul „test_migrate_er” este activat)

<?php

spațiu de nume Drupal\test_migrate_er\Plugin\migrate\source;

utilizați Drupal\migrate\Plugin\migrate\source\SqlBase;
utilizați Drupal\migrate\Row;

/**
 * Exemplu minimalist pentru un plugin sursă SqlBase.
 *
 * @MigrateSource(
 * id = "sursa_test",
 * source_module = "test_migrate_er",
 * )
 */
Class News extinde SqlBase {

  /**
   * {@inheritdoc}
   */
  interogare de funcție publică () {
    // Datele sursă sunt interogate din tabelul „curling_games”.
    $query = $this->select('tx_news_domain_model_news_copy', 'n')
      ->fields('n', [
        „uid”,
        'tstamp',
        'crdate',
        „datetime”,
        'titlu',
        'teaser',
        'corpul textului',
      ]);
    returnează $interogare;
  }



  /**
   * {@inheritdoc}
   */
  câmpuri de funcții publice() {
    $câmpuri = [
      'uid' => $this->t('uid' ),
      'tstamp' => $this->t('tstamp' ),
      'crdate' => $this->t('crdate' ),
      'datetime' => $this->t('datetime' ),
      'title' => $this->t('titlu' ),
      'teaser' => $this->t('teaser' ),
      'bodytext' => $this->t('bodytext' ),
    ];
    returnează $câmpuri;
  }

  /**
   * {@inheritdoc}
   */
  funcția publică getIds() {
    întoarcere [
      'uid' => [
        'type' => 'întreg',
        'alias' => 'n',
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  funcția publică pregătiRând(Rând $rând) {
    // Acest exemplu arată cum pot fi adăugate proprietățile sursei
    // prepareRow(). Datele sursei sunt stocate ca 2017-12-17
    // și orele ca 16:00. Drupal 8 salvează câmpurile de dată și oră
    // în format ISO8601 2017-01-15T16:00:00 pe UTC.
    // Concatenăm data și ora sursei și adăugăm secundele.
    // Același rezultat ar putea fi obținut și folosind „concat”
    // și „format_date” procesează pluginurile în migrare
    // definiție.
// $date = $row->getSourceProperty('data');
// $time = $row->getSourceProperty('time');
// $datetime = $date . 'T'. $timp . ':00';
// $row->setSourceProperty('datetime', $datetime);
    return parent::prepareRow($row);
  }
}

Găsești o mulțime de exemple de coduri de „migrare”... niciunul dintre ele nu vizează SQL și nici unul nu pare să fie actualizat. Mă întreb dacă cineva știe un exemplu de lucru sau măcar o documentație corectă. Asta ar face zilele următoare mult mai plăcute :)

Multumesc pentru ajutor

drapel cn
Doar pentru a exclude acest lucru, grupul YAML este în întrebare literal? `label:"TEST IMPORT"` nu este valid (are nevoie de un spațiu)
Kevin avatar
drapel in
O mulțime de exemple de migrare vizează SQL. Modulele migrate și migrate_plus au o mulțime de exemple de realizare a unui plugin de definiție și sursă personalizată de diferite tipuri.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.