Databasimport

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
AdamEvertsson's picture

Jag sitter med ett projekt som går ut på att överföra en massa databasinformation från en MySql-db till Drupal. I originaldatabasen finns massa kortreferenser mellan titeln på samtliga inlägg (texter, filmer, bilder) och själva informationen, samt mellan varje information och vem som har upphovsrätt och vem som skickade in materialet till sidan. Med andra ord - ett himla härke av korsreferenser.

Hur ska jag enklast få in detta i Drupal utan att tappa alla korsreferenser? Jag har prövat Node Import, Migrate och Table Wizard och de funkar väl att importera datan (Node Import funkade bäst, Migrate sa att det funkade, men importerade inte själva datan av någon anledning), men själva referenserna går jag ju miste om.

Jag känner att jag inte riktigt vet hur jag ska angripa det här problemet och tar gärna emot alla tips om hur jag ska närma mig den här besten. Vill ju inte bli sittande och manuellt lägga in allt material i Drupal...

/AE

Comments

Nödfallslösning...

sl27257's picture

Om du inte hittar någon modul som gör jobbet och det handlar om ett engångsjobb skulle jag försöka anpassa ursprungsdatan så att den kan accepteras av någon av modulerna du nämnde.

För jag antar att du på något sätt behöver samla ihop de olika referenserna till ett record som du kan importera till Drupal? Behöver du behålla referenserna blir det nog lite svårare. Då gäller det att hitta ett sätt att hantera dem i Drupal. Då skulle jag gjort ett mottagande format med cck + tillägg som fungerar och sedan kört vidare enligt nedan.

Läs in ursprungsdatabasen i något verktyg som du kan (phpadmin eller Mysql:s verktyg eller Toad eller så) och gör sedan om data så att det passar Drupals mottagande format. Det brukar inte vara så svårt att skriva några SQL snuttar som tuggar igenom databasen och stökar om den. Gör man fel är det bara att backa databasen och prova på nytt.

/Thomas

Följdfråga

AdamEvertsson's picture

Tack för tipset och dina tankar. Att få ut datan som CSV-filer är ju rätt så lätt, så jag ska se vad jag kan göra där. Hade redan testat och fått det att fungera innan jag skrev inlägget ovan, men det är ju som sagt långt kvar...

En annan tanke som mer eller mindre handlar om Drupal och dess hantering av information är denna: På varje text, bild eller film anges det vem som har skickat in det till sidan. I dagsläget har jag ett ID som efterfrågas så fort ett material visas. Är detta upplägget något jag bör eftersträva i mitt Drupalupplägg eller ska jag hellre bara lägga till ett CCK-fält där det anges vem som har skickat in materialet - och låta denna information vara unik i varje inlägg (oavsett att Björn Björnsson har skickat in 300 bilder)?

Förstår ni hur jag tänker. I det gamla systemet var det ju ett simpelt ID som efterfrågades och skrev ut på sidan, om jag gör enligt föreslagen modell så lagras mer data i databasen... men det är kanske enklast att göra så i Drupal...? Hjälp mig att tänka rätt innan jag börjar bygga upp sidan...

/AE




✄-----------------------------------------------------
Adam Evertsson - Came for the code, stayed for the community!

Det beror på...

sl27257's picture

Jag hade motsvarande problem för något år sedan.

Jag tänkte då så här:

I den gamla databasenfanns namn på vem som matat in det. Detta namn stämde ej överens med namnet / fanns ej i Drupal. Jag skapade motsvarande ett cck-fält (egentligen ett fält i en egen modul) för namnet där jag lade in det. Då har du räddat den gamla informationen.

Jag visste även att de flesta av användarna skulle komma att registrera sig som användare i den nya Drupal-installationen. I Drupal fick därför user 1 äga alla nya noder när jag importerade dem. (Idag hade skapat en speciell användare typ "importerat" eller "ingen"). Efterhand som de gamla användarna har dykt upp i den nya Drupal-installationen har jag genom ett SQL kommando flyttat ägarskapet för noderna till den nya användaren. Eftersom du har den ursprungliga användares namn i ett fält kan du lätt hitta alla noderna och byta ägare på dem.

Numera har jag tagit bort det gamla namnet som fanns i cck-fältet och använder bara Drupals användare.

( Det var http://www.svenskaolframjandet.se/publist som du ser handlade det om ca 150 noder vilket var tillräckligt många för att inte vilja göra det för hand...)

Man kan ju alltid debattera om man skall göra det som ett "hack" som jag gjorde eller om man skall försöka hitta några moduler... Det som styr för mig är att är det ett engångsjobb funkar ett hack bra. Glöm bara inte att testa på en testdatabas :)