You are here

public function MigrateExampleOracleNode::__construct in Migrate 7.2

General initialization of a Migration object.

Overrides Migration::__construct

File

migrate_example/migrate_example_oracle/migrate_example_oracle.migrate.inc, line 27
Examples and test fodder for migration from Oracle sources. To use this example (and to run the corresponding tests) you must define a connection to an Oracle database in your settings.php. E.g.,

Class

MigrateExampleOracleNode
Migration class to test importing from Oracle into nodes.

Code

public function __construct() {
  parent::__construct();
  $this->description = t('Example migration from Oracle into nodes.');

  // Note that Oracle by default upper-cases all identifiers, so use upper-case
  // for the key name and for source fields below.
  $this->map = new MigrateSQLMap($this->machineName, array(
    'OID' => array(
      'type' => 'int',
      'unsigned' => TRUE,
      'not null' => TRUE,
      'description' => 'Content ID',
    ),
  ), MigrateDestinationNode::getKeySchema());

  // Source fields available from the Oracle table.
  $fields = array(
    'OID' => t('Source id'),
    'TITLE' => t('Title'),
    'BODY' => t('Description'),
    'MAINIMAGE' => t('Main image'),
    'CREATED' => t('Creation date'),
    'UPDATED' => t('Updated date'),
  );

  // Oracle will usually (depending on server configuration) return only a
  // date (such as 01-MAY-11) for datetime fields - you need to use TO_CHAR()
  // to extract time information as well.
  $query = "SELECT OID, TITLE, BODY, MAINIMAGE, TO_CHAR(CREATED, 'yyyy/mm/dd hh24:mi:ss') CREATED,\n                TO_CHAR(UPDATED, 'yyyy/mm/dd hh24:mi:ss') UPDATED\n              FROM ORACLE_CONTENT";
  $count_query = "SELECT COUNT(*) FROM ORACLE_CONTENT";

  // Per above, the connection info should be defined in settings.php.
  global $conf;
  $this->source = new MigrateSourceOracle($conf['oracle_db'], $query, $count_query, $fields);
  $this->destination = new MigrateDestinationNode('migrate_example_oracle');

  // Basic fields
  $this
    ->addFieldMapping('title', 'TITLE');
  $this
    ->addFieldMapping('uid')
    ->defaultValue(1);
  $this
    ->addFieldMapping('body', 'BODY');
  $this
    ->addFieldMapping('field_mainimage', 'MAINIMAGE')
    ->description('An image blob in the DB')
    ->arguments(array(
    'file_function' => 'file_blob',
    // Alternatively, specify a column here for dynamic file name.
    'source_path' => 'druplicon.png',
  ));
  $this
    ->addFieldMapping('created', 'CREATED');
  $this
    ->addFieldMapping('changed', 'UPDATED');

  // Unmapped destination fields
  $this
    ->addUnmigratedDestinations(array(
    'is_new',
    'status',
    'promote',
    'revision',
    'language',
    'sticky',
    'revision_uid',
    'path',
  ));
}