2012-06-05 75 views
1

我正在用Symfony2開發我的網站的新版本。 我在以前的版本上使用過mysql,現在我使用Doctrine2/Mysql。 我想將我的用戶表導入新版本。我認爲最好的方法是使用Symfony2提供的命令工具。如何從外部mysql數據庫導入數據到Symfony2項目?

但是,我不知道如何瀏覽我的舊mysql數據庫(或mysql轉儲)以執行php腳本來填充我的新數據庫。

任何想法?

回答

0

我做到了!

我不知道這是否是最好的解決方案,但它的工作原理。

1)進口舊錶在我的新的數據庫

2)問主義內省數據庫,並生成相應的元數據文件。

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force 

3)問學說導入架構,並通過執行以下命令,現在

php app/console doctrine:mapping:import AcmeBlogBundle annotation 

建立相關的實體類,我可以用這個EntityManager的在我的舊的數據庫做所有我想要的腳本。

您可以在這裏找到更多的信息:http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

0

你不需要有一個新的數據庫,你可以繼續使用實際的數據庫。但是如果你想複製它,你可以使用mysqladmin command tool
然後,你可以generate your entities from your database

+0

數據庫模式是完全不同的。我需要瀏覽所有的數據,操作它,並通過使用php腳本來填充我的新聞數據庫,例如'$ user = new User('username');'和'persistAndFlush($ user)' – Jonathan

+0

在這種情況下,您可以設置兩個實體管理者既可以使用新舊數據庫,也可以使用Symfony2任務從舊數據庫獲取所有數據,並將其保存到新數據庫中。 http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html - 我想知道是否可以使用SQL腳本完成。 –

+1

我的舊網站不是Symfony2項目,所以我沒有entityManager。這只是我的問題。我需要在我的symfony2命令工具中瀏覽一個sql轉儲。 – Jonathan

0

聽起來很棘手,可能是ETL問題。那裏有一些tools;許多企業通過一些雙重授權的開源。如果你只做了一次,那麼許多工具可能過於複雜。但是,如果你必須經常進行這種數據傳輸,那麼一個好的ETL應用程序可以節省很多時間。我可以推薦Altova的MapForce作爲一個更直接和直觀的。它只是Windows而已。

+0

是的。該解決方案是一種ETL,但我只會使用它一次。所以我認爲使用ETL解決方案並不是必須的。太多的學習,配置只是一個導入。我正在觀察在我的舊數據庫上創建一個entityManager。 – Jonathan

相關問題