2010-08-18 5 views
2

J'ai une base de données et des tables héritées que j'aimerais essayer d'importer dans Drupal. Voici une structure de table exemple:Importation d'une table existante dans la base de données Drupal

Table : Projects 
ProjectID 
ProjectName 
CountryID 
TypeID 

ProjectID est la clé primaire, CountryID et TypeID sont les clés étrangères qui pointent vers les pays et le type tables, respectivement.

Je pense que je ferais d'abord un type de contenu Projets, refléterais les champs présents dans les tables héritées en utilisant CCK .. mon seul problème est d'importer les données .. Y at-il de toute façon automatiser cela?

Merci!

Répondre

1

Si vous pouvez obtenir les données au format CSV/TSV, Node Import devrait faire l'affaire, et est destiné aux responsables du site plutôt qu'aux développeurs.

+0

Le fichier CSV doit-il avoir les ID de clé étrangère? Je suppose que je créerais un type de contenu de projet reflétant les colonnes trouvées dans le dossier de csv. – r2b2

+0

Il n'a pas besoin de: il peut avoir tout ce que vous voulez importer. Et oui: chaque colonne correspondrait à un bit de données sur le nœud: une colonne pourrait correspondre au titre, une autre à un champ CCK, etc. Dans votre exemple, ProjectName pourrait correspondre au titre du nœud, et les champs ID pourraient être mappés à trois champs de numéro CCK distincts. C'est à vous de décider comment vous voulez construire le fichier CSV à importer. –

0

Le module Migrate gère l'importation à partir de tables. Migrate a des raccourcis pour effectuer des importations plus complexes, mais vous devriez être en mesure d'obtenir des données suffisamment simples pour ne pas avoir besoin de ces hooks (qui ne sont pas très bien documentés) en créant une nouvelle table à partir d'une jointure de vos tables existantes. Quelque chose comme ça (non testé):

CREATE TABLE combined SELECT * FROM Projects p 
LEFT JOIN Country c ON c.CountryID = p.CountryID 
LEFT JOIN Type t ON t.TypeID = p.TypeID 

Si vous ne vous décidez que vous voulez garder les choses plus séparés, avec les pays et les types de types de contenu distincts, un collègue de travail de la mine a écrit a pretty good tutorial on using migrate hooks.

0

L'importation de noeud est assez bonne si vous exportez simplement les données en tant que csv et importez les clés étrangères en premier. Cela fonctionne avec des champs complexes comme les références de nœuds.

Sinon, vous pouvez écrire un module de base qui parcourt la base de données ligne par ligne et insère les enregistrements dans des noeuds. Certains code pseudo vraiment basique:

$node->title = $row['projectName']; 
$node->type = 'project'; 
$node->country_field[0]['value'] = $row['country_name']; 
if(save_node($node)) { 
set_message('Imported node'); 
} 

Drupal a commutation de base de données afin que vous pouvez basculer entre les bases de données.

Questions connexes