Exemplo n.º 1
0
 function write_data_mysql($table_name)
 {
     global $db;
     $sql = "SELECT *\n\t\t\tFROM {$table_name}";
     $result = mysql_unbuffered_query($sql, $db->db_connect_id);
     if ($result != false) {
         $fields_cnt = mysql_num_fields($result);
         // Get field information
         $field = array();
         for ($i = 0; $i < $fields_cnt; $i++) {
             $field[] = mysql_fetch_field($result, $i);
         }
         $field_set = array();
         for ($j = 0; $j < $fields_cnt; $j++) {
             $field_set[] = $field[$j]->name;
         }
         $search = array("\\", "'", "", "\n", "\r", "", '"');
         $replace = array("\\\\", "\\'", '\\0', '\\n', '\\r', '\\Z', '\\"');
         $fields = implode(', ', $field_set);
         $sql_data = 'INSERT INTO ' . $table_name . ' (' . $fields . ') VALUES ';
         $first_set = true;
         $query_len = 0;
         $max_len = get_usable_memory();
         while ($row = mysql_fetch_row($result)) {
             $values = array();
             if ($first_set) {
                 $query = $sql_data . '(';
             } else {
                 $query .= ',(';
             }
             for ($j = 0; $j < $fields_cnt; $j++) {
                 if (!isset($row[$j]) || is_null($row[$j])) {
                     $values[$j] = 'NULL';
                 } else {
                     if ($field[$j]->numeric && $field[$j]->type !== 'timestamp') {
                         $values[$j] = $row[$j];
                     } else {
                         $values[$j] = "'" . str_replace($search, $replace, $row[$j]) . "'";
                     }
                 }
             }
             $query .= implode(', ', $values) . ')';
             $query_len += strlen($query);
             if ($query_len > $max_len) {
                 $this->flush($query . ";\n\n");
                 $query = '';
                 $query_len = 0;
                 $first_set = true;
             } else {
                 $first_set = false;
             }
         }
         mysql_free_result($result);
         // check to make sure we have nothing left to flush
         if (!$first_set && $query) {
             $this->flush($query . ";\n\n");
         }
     }
 }
Exemplo n.º 2
0
 function write_data_mysql($table_name, $start = 0, $limit = ROWS_PER_STEP, $complete_insert = true, $extended_insert = false, $compact_line_breaks = false)
 {
     global $db;
     $start = $start <= 0 ? 0 : (int) $start;
     $limit = $limit <= 0 ? 0 : (int) $limit;
     $limit_sql = '';
     if (!empty($limit)) {
         $limit_sql = ' LIMIT ' . $start . ', ' . $limit;
     }
     $sql = "SELECT * FROM " . $table_name . $limit_sql;
     $result = mysql_unbuffered_query($sql, $db->db_connect_id);
     if ($result != false) {
         $fields_cnt = mysql_num_fields($result);
         // Get field information
         $field = array();
         for ($i = 0; $i < $fields_cnt; $i++) {
             $field[] = mysql_fetch_field($result, $i);
         }
         $field_set = array();
         for ($j = 0; $j < $fields_cnt; $j++) {
             $field_set[] = $field[$j]->name;
         }
         $search = array("\\", "'", "", "\n", "\r", "", '"');
         $replace = array("\\\\", "\\'", '\\0', '\\n', '\\r', '\\Z', '\\"');
         $fields = implode(', ', $field_set);
         $sql_data = 'INSERT INTO ' . $table_name . ' ';
         if ($complete_insert) {
             $sql_data .= '(' . $fields . ') VALUES ';
         } else {
             $sql_data .= 'VALUES ';
         }
         $first_set = true;
         $query = '';
         $query_len = 0;
         $max_len = get_usable_memory();
         $rows_cnt = 0;
         while ($row = mysql_fetch_row($result)) {
             $values = array();
             if ($first_set || !$extended_insert) {
                 $query .= $sql_data . ($extended_insert && !$compact_line_breaks ? "\n" : '') . '(';
             } else {
                 $query .= ',' . (!$compact_line_breaks ? "\n" : '') . '(';
             }
             for ($j = 0; $j < $fields_cnt; $j++) {
                 if (!isset($row[$j]) || is_null($row[$j])) {
                     $values[$j] = 'NULL';
                 } elseif ($field[$j]->numeric && $field[$j]->type !== 'timestamp') {
                     $values[$j] = $row[$j];
                 } else {
                     $values[$j] = "'" . str_replace($search, $replace, $row[$j]) . "'";
                 }
             }
             $query .= implode(', ', $values) . ')';
             if (!$extended_insert) {
                 $query .= ';' . "\n";
             }
             $query_len += strlen($query);
             if ($query_len > $max_len) {
                 if ($extended_insert) {
                     $query .= ';' . "\n";
                 }
                 $this->flush($query);
                 $query = '';
                 $query_len = 0;
                 $first_set = true;
             } else {
                 $first_set = false;
             }
             $rows_cnt++;
         }
         mysql_free_result($result);
         // check to make sure we have nothing left to flush
         if (!$first_set && $query) {
             if ($extended_insert) {
                 $query .= ';' . "\n";
             }
             $this->flush($query . "\n\n");
         }
         return $rows_cnt;
     }
     return false;
 }