Điểm:0

Sql Migrate - ví dụ hoạt động

lá cờ cn

Ok tôi chỉ dành 8 giờ với mô-đun di chuyển. Tôi không thể tìm thấy chỉ một ví dụ hoạt động cho việc di chuyển dữ liệu sql. Ngay cả tài liệu riêng của Drupal cũng có trạng thái "lỗi thời".

Tôi đang cố gắng chỉ nhập tiêu đề - vì vậy điều đó sẽ khá đơn giản. Thật không may, tôi thậm chí không gặp lỗi khi cố gắng nhập cấu hình cũng như plugin nguồn.

test_migrate_er.info.yml - (mô-đun được bật)

tên: Thử nghiệm di chuyển ER
loại: mô-đun
description: 'Trình nhập cho các nút tin tức qua sql ("test" // Typo 3)'
gói: kiểm tra
phiên bản: PHIÊN BẢN
core_version_requirement: ^8.8.0 || ^9.0
dự án: 'test_migrate_er'

phụ thuộc:
  - drupal: di chuyển
  - drupal: di chuyển_tools
  - drupal:di chuyển_plus

mig_plus.migration_group.test_migrate_content.yml (cái này được nhập qua "drush cim")

uuid: 366085cb-4cea-49d1-84a0-534afd31b114
mã ngôn ngữ: en
trạng thái: đúng
phụ thuộc: { }
id: test_migrate_content
nhãn:"NHẬP KIỂM TRA"
mô tả: không
source_type: null
mô-đun: không
shared_configuration: null
nguồn:
  plugin: test_source
  khóa: di chuyển

Kết nối cơ sở dữ liệu được đặt trong local.settings.php (nó sử dụng khóa nguồn)

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

Khi nhập cấu hình thr tất cả có vẻ tốt - không có lỗi ... nhưng khi xuất nó thì nguồn bit bao gồm các thành phần phụ (plugin và khóa) sẽ biến mất như thể chúng là thuộc tính không hợp lệ. Điều đó cũng sẽ giải thích tại sao plugin/di chuyển không bao giờ được hiển thị khi thử nghiệm qua ms. Có vẻ như trình phân tích cú pháp cấu hình đang bỏ qua nó.

Plugin nguồn (/web/modules/custom/test_migrate_er/src/Plugin/migrate/source/News.php. -- mô-đun "test_migrate_er" được bật)

<?php

không gian tên Drupal\test_migrate_er\Plugin\migrate\source;

sử dụng Drupal\di chuyển\Plugin\di chuyển\source\SqlBase;
sử dụng Drupal\di chuyển\Row;

/**
 * Ví dụ tối giản cho plugin nguồn SqlBase.
 *
 * @MigrateSource(
 * id = "test_source",
 * source_module = "test_migrate_er",
 * )
 */
lớp Tin tức mở rộng SqlBase {

  /**
   * {@inheritdoc}
   */
  truy vấn hàm công khai() {
    // Dữ liệu nguồn được truy vấn từ bảng 'curling_games'.
    $query = $this->select('tx_news_domain_model_news_copy', 'n')
      -> trường ('n', [
        'uid',
        'dấu',
        'crdate',
        'ngày giờ',
        'Tiêu đề',
        'trêu ghẹo',
        'bài kiểm tra cơ thể',
      ]);
    trả lại truy vấn $;
  }



  /**
   * {@inheritdoc}
   */
  trường hàm công khai() {
    trường $ = [
      'uid' => $this->t('uid' ),
      'tstamp' => $this->t('tstamp' ),
      'crdate' => $this->t('crdate' ),
      'datetime' => $this->t('datetime' ),
      'tiêu đề' => $this->t('title' ),
      'đoạn giới thiệu' => $this->t('đoạn giới thiệu' ),
      'bodytext' => $this->t('bodytext' ),
    ];
    trả lại các trường $;
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai getIds() {
    trở lại [
      'uid' => [
        'kiểu' => 'số nguyên',
        'bí danh' => 'n',
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  chức năng công cộng chuẩn bịRow(Row $row) {
    // Ví dụ này cho thấy các thuộc tính nguồn có thể được thêm vào như thế nào
    // chuẩn bịRow(). Ngày nguồn được lưu trữ là 2017-12-17
    // và thời gian là 16:00. Drupal 8 lưu các trường ngày và giờ
    // ở định dạng ISO8601 2017-01-15T16:00:00 trên UTC.
    // Chúng tôi nối ngày và giờ của nguồn và thêm giây.
    // Kết quả tương tự cũng có thể đạt được bằng cách sử dụng 'concat'
    // và 'format_date' xử lý plugin trong quá trình di chuyển
    // Định nghĩa.
// $date = $row->getSourceProperty('date');
// $time = $row->getSourceProperty('time');
// $datetime = $date . 'T' . $ thời gian . ':00';
// $row->setSourceProperty('datetime', $datetime);
    trả về cha mẹ::prepareRow($row);
  }
}

Bạn tìm thấy rất nhiều mã ví dụ "di chuyển" ... không phải mã nào trong số chúng nhắm mục tiêu sql và dường như không phải mã nào trong số chúng được cập nhật. Tôi tự hỏi liệu có ai biết ví dụ hoạt động hoặc ít nhất là tài liệu chính xác không. Điều đó sẽ làm cho những ngày tiếp theo thú vị hơn rất nhiều :)

Cảm ơn vì sự giúp đỡ

lá cờ cn
Chỉ cần loại trừ nó, nhóm YAML trong câu hỏi có đúng nguyên văn không? `nhãn:"KIỂM TRA NHẬP"` không hợp lệ (cần khoảng trắng)
Kevin avatar
lá cờ in
Rất nhiều ví dụ di chuyển nhắm mục tiêu SQL. Các mô-đun di chuyển và di chuyển_plus có rất nhiều ví dụ về cách thực hiện định nghĩa và plugin nguồn tùy chỉnh thuộc nhiều loại khác nhau.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.