Codeigniter数据库备份 - 插入多行而不重复“插入”

问题描述:

我试图找到一种方法来使用Codeigniter“数据库实用程序”备份我的数据库,但不重复“INSERT INTO”,我的意思是一切正常,但当我们看到生成的SQL文件,我们看到这样的内容:Codeigniter数据库备份 - 插入多行而不重复“插入”

INSERT INTO Membership (ID, FirstName, LastName, DOB) 
VALUES (1, 'John', 'Smith', '5/5/1960') 

INSERT INTO Membership (ID, FirstName, LastName, DOB) 
VALUES (2, 'Hello", 'World", '4/9/1975') 

INSERT INTO Account(ID, Type, Effective_Date, Status) 
VALUES (1, 'Gold', GetDate(), 'Active') 

INSERT INTO Account(ID, Type, Effective_Date, Status) 
VALUES (2, 'Platinum', GetDate(), 'Inactive') 

INSERT INTO Participant(ID, Code, Type) 
VALUES (1, 002, 'A') 

INSERT INTO Participant(ID, Code, Type) 
VALUES (2, 002, 'A') 

的是如此之慢,每当我们在另一个数据库中导入。我想是这样的:只使用一个INSERT INTO

INSERT INTO #temp_table (1, 'John', 'Smith, '5/5/1960', 'Gold', 'Active', '002', 'A') 
. 
. 
. 
. 
so on 

,有没有什么办法来实现这一目标?谢谢。

你可以利用笨insert_batch()功能

按照此link here来看看它是如何工作的:

创建领域,这样值的多维数组,并使用笨inset_batch()函数将所有这些插入到单个查询中。

$data = array(
    array(
      'ID' => 1, 
      'FirstName' => 'John', 
      'LastName' => 'Doe', 
      'DOB'  => '5/5/1960' 
    ), 
    array(
      'ID' => 2, 
      'FirstName' => 'John', 
      'LastName' => 'Smith', 
      'DOB'  => '5/5/1960' 
    ) 
); 

$this->db->insert_batch('temp_table', $data); 

我明白你的问题,数据库实用程序是相当缓慢此外,由于字符串连接,如果passthru()是您的服务器上启用,然后mysqldump可以使用,在这里工作的代码,这将导出当前的数据库。

public function backup_current_db() 
{ 
    $db_user=$this->db->username; 
    $password=$this->db->password; 
    $db=$this->db->database; 

    $filename = $db . "-" . date("Y-m-d_H-i-s") . ".sql"; 
    $mime = "application/octet-stream"; 

    header("Content-Type: " . $mime); 
    header('Content-Disposition: attachment; filename="' . $filename . '"'); 

    $cmd = "mysqldump -u '$db_user' --password='$password' --no-create-info --complete-insert '$db' "; 
    passthru($cmd); 

    die(); 
}