2011-04-05 30 views
0

我有一個巨大的表,我想在Symfony/Doctrine中使用,但是我不希望Doctrine在每次重新生成我的表模式時填充它,因爲它很大,導入時間太長,它不會如果我把它放在固定裝置上,效果不好。如何防止Doctrine爲特定表生成SQL?

如何在Doctrine中定義它的結構,生成它的PHP數據模型,同時防止Doctrine生成數據庫表模式?

+0

不確定你的意思。從燈具創建表格或加載數據需要很長時間嗎? – Dziamid 2011-04-05 09:18:25

+0

如果我將它放入燈具中,請加載數據。 – Void 2011-04-05 10:06:19

+0

我想這張表是隻讀的,你不想重建它的類並插入sql。如果是這樣,你可以將這個模式移動到一個單獨的連接,並且只在你的'教條'連接中建立類。看看[我的symfony fork](https://github.com/dziamid/Symfony_forked),我在這裏實現了。例如,你可以運行./symfony doctrine:build --all --and - load --con ='doctrine',它只會影響教條連接的類。 – Dziamid 2011-04-05 12:23:26

回答

0

不要將該數據保存到您的燈具,而是使用mysqldump(或類似的)導出它,然後導入它(使用普通的SQL命令),例如。

mysql -u user -p password database_name < data/massive_table_export.sql

+0

我有兩個問題:1)即使是原始的mysql導入太慢2)我想在schema.yml中定義表 – Void 2011-04-05 14:11:00

+0

如果原始導入太慢,那麼您將需要將它存儲在某處symfony/doctrine不會破壞/重建它。此外,您可以*在模式中定義表格,只是在轉儲時不導出表格定義(或者使用「如果不存在則創建」)。事實上,這正是我所做的。我也有一個龐大的表,我在我的開發環境中使用了幾行僞數據,並使用腳本來選擇是加載完整(慢)表還是構建虛擬(快速)表。 – 2011-04-05 14:38:28