我必須用PHP和Zend框架將(大).sql
文件導入到MySQL中。用php和zend框架導入大型的.sql文件
連接是打開的,我有$_sql
包含SQL文件的全部內容,但 - 當然,一個簡單的
$this->db->query($_sql);
將無法正常工作。
我能做些什麼來導入這個大文件?
更新:是的,它是一個mysql-dump與我的mysql數據庫的結構定義。是的,它需要從內部運行而不使用命令行。
求助: 我需要一個mysqli對象來解決這個問題,mysqli-> multiQuery是要走的路。這裏的自舉是什麼我(單元測試),如:
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$options = $application->getOptions();
$_sqlFile = realpath(APPLICATION_PATH.'\\..\\tests\\sql\\');
$_sqlFile .= '\\myLargeSQL.sql';
$sql = file_get_contents($_sqlFile);
$mysqliobject = new mysqli(
$options['resources']['db']['params']['host'],
$options['resources']['db']['params']['username'],
$options['resources']['db']['params']['password'],
$options['resources']['db']['params']['dbname']
);
$mysqliobject->multi_query($sql);
if ($mysqliobject->errno <> 0) {
throw new Exception('Error creating temp database in ('.__FILE__.' on line '.__LINE__.')');
}
$mysqliobject->close();
不要擔心\,這只是即暫時(很快就會解決這個問題)是的,我是在Windows機器上。所以,也許有人可以使用它。
是該文件的mysqldump的結果呢? – 2012-03-09 15:38:43
SQL文件是一個巨大的SQL語句還是多個較小的?如果它是多個較小的,則可以一次運行一個命令的SQL文件。 – 2012-03-09 16:08:40
你真的需要使用ZF執行查詢嗎?我通常使用'source'命令爲大型'.sql'文件恢復命令行'mysql'。 – 2012-03-09 16:09:35