Home > Database > Mysql Tutorial > How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?

How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?

Susan Sarandon
Release: 2024-10-28 10:17:02
Original
333 people have browsed it

How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?

Efficient MySQL File Import in PHP: Splitting Queries for Shared Hosting

In the realm of web development, the need to import large database files while using shared hosting providers commonly arises. Unfortunately, accessing MySQL via the command line may be restricted, necessitating a PHP-based solution for parsing and executing queries.

To address this challenge, a robust function known as SplitSQL() has been developed to reliably split a database file into individual queries without consuming excessive memory.

How it Works

SplitSQL() leverages a file-reading approach, iterating through the file line by line. It identifies queries by detecting the specified delimiter (; by default) at the end of a line. Once a complete query is assembled, it's executed immediately using mysql_query().

Key Features

  • Memory-efficient: By avoiding the need to load the entire file into memory, SplitSQL() is suitable for handling large files without performance issues.
  • Fault-tolerance: If a query fails, error messages are displayed for debugging purposes.
  • Output buffering: To prevent memory exhaustion, SplitSQL() flushes output after each query execution.

Usage Example

<code class="php">function SplitSQL($file, $delimiter = ';')
{
    set_time_limit(0);

    if (is_file($file) === true)
    {
        $file = fopen($file, 'r');

        if (is_resource($file) === true)
        {
            $query = array();

            while (feof($file) === false)
            {
                $query[] = fgets($file);

                if (preg_match('~' . preg_quote($delimiter, '~') . '\s*$~iS', end($query)) === 1)
                {
                    $query = trim(implode('', $query));

                    if (mysql_query($query) === false)
                    {
                        echo '<h3>ERROR: ' . $query . '</h3>' . "\n";
                    }

                    else
                    {
                        echo '<h3>SUCCESS: ' . $query . '</h3>' . "\n";
                    }

                    while (ob_get_level() > 0)
                    {
                        ob_end_flush();
                    }

                    flush();
                }

                if (is_string($query) === true)
                {
                    $query = array();
                }
            }

            return fclose($file);
        }
    }

    return false;
}

// Test data
$file = '/path/to/db_dump.sql';
SplitSQL($file);</code>
Copy after login

The above is the detailed content of How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template