2016-04-14 26 views
0

Symfony2 ile ilgili bir sorum var. Bir denetleyicide bir mysql komutunu nasıl çalıştırabilirim? Bir ithalat gibi bir şey. Ben (yürütme) ile ama boşuna (ayrıca ben herhangi bir hata alamadım) ile çalıştı: mysql -u kullanıcı adı password = şifre veritabanı_adı < file.sqlSymfony2 denetleyicisinde mysql komutunu çağırın

cevap

0
use Symfony\Component\Process\Process; 
use Symfony\Component\Process\Exception\ProcessFailedException; 

$process = new Process('mysql -u username –-password=password database_name < file.sql'); 
$process->run(); 

// executes after the command finishes 
if (!$process->isSuccessful()) { 
    throw new ProcessFailedException($process); 
} 

http://symfony.com/doc/current/components/process.html#usage

0

pdo Nesne almak için: $entityManager->getConnection()->getWrappedConnection() ...

Ama depreacated.

Aksi takdirde, doktrinde bir yerleşik SQL tabanlı dil (DQL) doc bakın ... SQL benzeri isteği oluşturur ve Varlıkları döndürür zorunda: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html

bir kabuk komutu yapmak istiyorsanız, bunu deneyin neden

+0

Sorunum biraz daha karmaşık bundan daha oldu ... görmüyorum. Veritabanındaki en iyi senaryo senaryosu 150000 satırını içe aktarmak zorunda kaldım ve kullanıcı bunun için bir yanıt beklerken bunu yapmak zorunda kaldım. Doktrini ile denedim, ama çok uzun sürüyordu. MySQL ithalatı bulabildiğim en hızlı yoldu. –

+0

Peki ya bir .sql dosyasını okuyun ve foreach döngüsüyle işleyin? Ayrıca, çok fazla zaman alır? – Vincent

+0

Yalnızca sql dosyası 35Mb'dir. Foreach 150000 döngüye sahip olacaktı. Ve bu iyi bir senaryo olurdu. Benim mysql ithalatı benim problemim için bir çözümdü. –