使用php导入一个大的mysql数据库

时间:2012-12-05 19:01:04

标签: php mysql

我有一个大约300mb的mysql数据库,但遗憾的是我无法使用phpmyadmin将此文件导入我的网站主机,而且我没有shell访问权限。

我尝试了以下替代方案

  

MySQLDumper

     

bigdump

但可以将其插入数据库。

数据库已上传到.sql格式的文件夹。是否可以创建一个PHP脚本来读取.sql文件并执行查询?

使用mysqldump转储sql文件。

下面是格式。 (请注意,我删除了一些行,因为有很多行)

DROP TABLE IF EXISTS `prime_lands`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `hotels` (
  `hotel_id` int(11) DEFAULT NULL,
  `chain_id` int(11) DEFAULT NULL,
  `chain_name` varchar(100) DEFAULT NULL,
  `brand_id` int(11) DEFAULT NULL,
  `brand_name` varchar(100) DEFAULT NULL,
  `hotel_name` varchar(100) DEFAULT NULL,
  `hotel_formerly_name` varchar(100) DEFAULT NULL,
  `hotel_translated_name` varchar(100) DEFAULT NULL
...........
)

-- Dumping data for table `prime_lands`
--

LOCK TABLES `prime_lands` WRITE;
/*!40000 ALTER TABLE `prime_lands` DISABLE KEYS */;

INSERT INTO `prime_lands` VALUES (1,421,'Samed Resorts Group',921,'Samed Resorts Group','Sai Kaew Beach Resort','','Sai Kaew Beach Resort',.......................)

....................................

1 个答案:

答案 0 :(得分:2)

应该有效:

$run=   exec ('mysql -u username -p password database_name < filename.sql ', $out);
var_dump($run);
var_dump($out);

可能更适合调试:

$out = shell_exec('mysql -u username -p password database_name < filename.sql');
var_dump($out);

作为一个关闭你可能会要求你的主机为你运行命令,大多数'好'的主机会帮你解决这个问题。