Example #1
0
function SplitSQL($file, $delimiter = ';')
{
    set_time_limit(0);
    if (is_file($file) === true) {
        $file = fopen($file, 'r');
        if (is_resource($file) === true) {
            $query = [];
            $db = new DB();
            $dbsys = DB_TYPE;
            $c = new ColorCLI();
            while (feof($file) === false) {
                $query[] = fgets($file);
                if (preg_match('~' . preg_quote($delimiter, '~') . '\\s*$~iS', end($query)) === 1) {
                    $query = trim(implode('', $query));
                    if ($dbsys == "pgsql") {
                        $query = str_replace(array("`", chr(96)), '', $query);
                    }
                    try {
                        $qry = $db->prepare($query);
                        $qry->execute();
                        echo $c->alternateOver('SUCCESS: ') . $c->primary($query);
                    } catch (PDOException $e) {
                        if ($e->errorInfo[1] == 1091 || $e->errorInfo[1] == 1060 || $e->errorInfo[1] == 1054 || $e->errorInfo[1] == 1061 || $e->errorInfo[1] == 1062 || $e->errorInfo[1] == 1071 || $e->errorInfo[1] == 1072 || $e->errorInfo[1] == 1146 || $e->errorInfo[0] == 23505 || $e->errorInfo[0] == 42701 || $e->errorInfo[0] == 42703 || $e->errorInfo[0] == '42P07' || $e->errorInfo[0] == '42P16') {
                            if ($e->errorInfo[1] == 1060) {
                                echo $c->error($query . " The column already exists - Not Fatal {" . $e->errorInfo[1] . "}.\n");
                            } else {
                                echo $c->error($query . " Skipped - Not Fatal {" . $e->errorInfo[1] . "}.\n");
                            }
                        } else {
                            if (preg_match('/ALTER IGNORE/i', $query)) {
                                $db->queryExec("SET SESSION old_alter_table = 1");
                                try {
                                    $qry = $db->prepare($query);
                                    $qry->execute();
                                    echo $c->alternateOver('SUCCESS: ') . $c->primary($query);
                                } catch (PDOException $e) {
                                    exit($c->error($query . " Failed {" . $e->errorInfo[1] . "}\n\t" . $e->errorInfo[2]));
                                }
                            } else {
                                exit($c->error($query . " Failed {" . $e->errorInfo[1] . "}\n\t" . $e->errorInfo[2]));
                            }
                        }
                    }
                    while (ob_get_level() > 0) {
                        ob_end_flush();
                    }
                    flush();
                }
                if (is_string($query) === true) {
                    $query = [];
                }
            }
            return fclose($file);
        } else {
            return false;
        }
    } else {
        return false;
    }
}