Bagaimana untuk Mengimport Fail MySQL yang Besar ke dalam Persekitaran Hosting Dikongsi Menggunakan PHP?

Linda Hamilton
Lepaskan: 2024-10-31 11:30:17
asal
907 orang telah melayarinya

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

Mengoptimumkan Import Pangkalan Data MySQL dalam PHP: Membahagikan Pertanyaan Dengan Boleh Dipercaya

Dalam bidang pembangunan web, senario timbul apabila mengemas kini tapak web yang dihoskan pada pelayan kongsi memerlukan kemas kini pangkalan data. Walau bagaimanapun, ketidakupayaan untuk mengakses MySQL secara luaran menimbulkan cabaran. Untuk menangani ini, mengimport fail MySQL melalui PHP menjadi perlu. Artikel ini meneroka penyelesaian yang cekap untuk memisahkan fail pangkalan data MySQL yang besar kepada pertanyaan individu dan mengimportnya menggunakan PHP.

Pernyataan Masalah

Objektifnya adalah untuk membangunkan kaedah yang boleh dipercayai untuk memisahkan fail pangkalan data yang besar kepada pertanyaan individu tanpa membuka keseluruhan fail secara serentak. Kekangan termasuk ketiadaan fungsi baris arahan MySQL, LOAD DATA INFILE, phpMyAdmin, dan mysqli_multi_query().

Penyelesaian: Fungsi SplitSQL

Penyelesaian terletak pada memori -fungsi mesra dipanggil SplitSQL, yang berulang melalui fail baris demi baris dan mengenal pasti aksara pembatas pertanyaan. Ia mengumpul baris ke dalam tatasusunan sehingga pembatas ditemui, membentuk pertanyaan lengkap. Fungsi tersebut kemudiannya melaksanakan pertanyaan dan memberikan maklum balas tentang kejayaan atau kegagalannya.

Pelaksanaan

<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;
}</code>
Salin selepas log masuk

Pengujian dan Output

Setelah menguji dengan longgokan SQL phpMyAdmin yang besar, fungsi SplitSQL membuahkan hasil yang berjaya. Input dan output sampel adalah seperti berikut:

Data Ujian

<code class="sql">CREATE TABLE IF NOT EXISTS "test" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT,
    "name" TEXT,
    "description" TEXT
);

BEGIN;
    INSERT INTO "test" ("name", "description")
    VALUES (";;;", "something for you mind; body; soul");
COMMIT;

UPDATE "test"
    SET "name" = "; "
    WHERE "id" = 1;</code>
Salin selepas log masuk

Output

SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT );
SUCCESS: BEGIN;
SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul");
SUCCESS: COMMIT;
SUCCESS: UPDATE "test" SET "name" = "; " WHERE "id" = 1;
Salin selepas log masuk

Kesimpulan

Fungsi SplitSQL menyediakan penyelesaian yang boleh dipercayai untuk membelah besar Fail pangkalan data MySQL ke dalam pertanyaan individu dan melaksanakannya menggunakan PHP. Ia berkesan menangani kekangan yang disebutkan di atas dan membolehkan import automatik kemas kini pangkalan data. Pendekatan ini memastikan penyelenggaraan pangkalan data yang lancar dalam persekitaran pengehosan kongsi.

Atas ialah kandungan terperinci Bagaimana untuk Mengimport Fail MySQL yang Besar ke dalam Persekitaran Hosting Dikongsi Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!