Skip to content

Instantly share code, notes, and snippets.

@VictorHugoBatista
Forked from ricardobrg/sql_import.php
Created October 8, 2018 01:08
Show Gist options
  • Save VictorHugoBatista/eb1b87dccee6d5cd2aaa478ebfb8a7fb to your computer and use it in GitHub Desktop.
Save VictorHugoBatista/eb1b87dccee6d5cd2aaa478ebfb8a7fb to your computer and use it in GitHub Desktop.
WPDB SQL File import
<?php
/* NOTICE
* This script imports SQL commands "as is".
* Double check the SQL commands before using it
* and BACKUP YOUR DATABASE.
* It needs some improvement to use wpdb->prepare.
*/
class WPSQLImporter{
/**
* Loads an SQL stream into the WordPress database one command at a time.
*
* @params $sqlfile The file containing the mysql-dump data.
* @return boolean Returns true, if SQL was imported successfully.
* @throws Exception
*/
public static function importSQL($sqlfile){
//load WPDB global
global $wpdb;
// read file into array
$file = file($sqlfile);
// import file line by line
// and filter (remove) those lines, beginning with an sql comment token
$file = array_filter($file,
create_function('$line',
'return strpos(ltrim($line), "--") !== 0;'));
// and filter (remove) those lines, beginning with an sql notes token
$file = array_filter($file,
create_function('$line',
'return strpos(ltrim($line), "/*") !== 0;'));
$sql = "";
$del_num = false;
foreach($file as $line){
$query = trim($line);
try
{
$delimiter = is_int(strpos($query, "DELIMITER"));
if($delimiter || $del_num){
if($delimiter && !$del_num ){
$sql = "";
$sql = $query."; ";
echo "OK";
echo "<br/>";
echo "---";
echo "<br/>";
$del_num = true;
}else if($delimiter && $del_num){
$sql .= $query." ";
$del_num = false;
echo $sql;
echo "<br/>";
echo "do---do";
echo "<br/>";
$wpdb->query($sql);
$sql = "";
}else{
$sql .= $query."; ";
}
}else{
$delimiter = is_int(strpos($query, ";"));
if($delimiter){
$wpdb->query("$sql $query");
echo "$sql $query";
echo "<br/>";
echo "---";
echo "<br/>";
$sql = "";
}else{
$sql .= " $query";
}
}
}
catch (\Exception $e)
{
echo $e->getMessage() . "<br /> <p>The sql is: $query</p>";
}
}
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment