【问题标题】:Codeigniter database backup - Insert multiple rows without repeating “INSERT INTO”Codeigniter 数据库备份 - 插入多行而不重复“INSERT INTO”
【发布时间】:2017-10-09 17:13:20
【问题描述】:

我正在尝试找到一种方法来使用 Codeigniter“数据库实用程序”备份我的数据库,但不重复“插入”,我的意思是一切正常,但是当我们看到生成的 sql 文件时,我们会看到如下内容:

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 #temp_table (1, 'John', 'Smith, '5/5/1960', 'Gold', 'Active', '002', 'A')
.
.
.
.
so on

只使用一个 INSERT INTO,有什么方法可以做到这一点吗?谢谢。

【问题讨论】:

    标签: mysql codeigniter database-backups


    【解决方案1】:

    你可以使用 CodeIgniter insert_batch() 函数

    关注link here 看看它是如何工作的:

    【讨论】:

      【解决方案2】:

      用这样的字段和值创建一个多维数组,并使用 codeigniter 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);
      

      【讨论】:

        【解决方案3】:

        我明白你的问题,数据库工具也很慢,由于字符串连接,如果你的服务器上启用了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();
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-07
          • 1970-01-01
          • 1970-01-01
          • 2016-05-04
          • 2021-11-19
          • 2018-11-13
          • 1970-01-01
          相关资源
          最近更新 更多