Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memindahkan Pangkalan Data SQLite3 Saya dengan Mudah ke MySQL?

Bagaimanakah Saya Boleh Memindahkan Pangkalan Data SQLite3 Saya dengan Mudah ke MySQL?

Barbara Streisand
Barbara Streisandasal
2024-12-08 22:45:12935semak imbas

How Can I Easily Migrate My SQLite3 Database to MySQL?

Penghijrahan Pantas dan Mudah daripada SQLite3 ke MySQL

Jika anda mencari pendekatan yang mudah untuk memindahkan pangkalan data SQLite3 anda ke MySQL, anda tidak bersendirian. Percubaan untuk menukar data secara manual selalunya membawa kepada ketidakpastian tentang ketepatan data yang diimport. Walaupun tiada pustaka yang ditetapkan untuk penukaran khusus ini, kami boleh memberikan panduan berdasarkan perbezaan antara dua format fail.

Perbezaan Sintaks

  • SQLite3 menggunakan "MULAKAN TRANSAKSI" dan "COMMIT," yang ditinggalkan dalam MySQL.
  • MySQL memerlukan dua kali ganda petikan bukannya petikan tunggal dalam takrif skema.
  • MySQL menggunakan petikan tunggal untuk rentetan dalam klausa "INSERT INTO", tidak seperti petikan berganda SQLite3.
  • Rentetan melarikan diri berbeza antara kedua-dua sistem.
  • MySQL menggunakan 1 dan 0 untuk boolean, manakala SQLite3 menggunakan 't' dan 'f.'
  • Kefungsian autokenaikan dinamakan "AUTOINCREMENT" dalam SQLite3 dan "AUTO_INCREMENT" dalam MySQL.

Skrip Perl untuk Migrasi Data

Kami menawarkan skrip Perl yang diubah suai yang menangani perbezaan ini dan telah diuji dengan jayanya pada set data tertentu. Walau bagaimanapun, anda mungkin perlu menyesuaikannya untuk menyelaraskan dengan data khusus anda:

#! /usr/bin/perl

while ($line = <>){
    if (($line !~  /BEGIN TRANSACTION/) &amp;&amp; ($line !~ /COMMIT/) &amp;&amp; ($line !~ /sqlite_sequence/) &amp;&amp; ($line !~ /CREATE UNIQUE INDEX/)){
        
        if ($line =~ /CREATE TABLE \&quot;([a-z_]*)\&quot;(.*)/i){
            $name = ;
            $sub = ;
            $sub =~ s/\&quot;//g;
            $line = &quot;DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n&quot;;
        }
        elsif ($line =~ /INSERT INTO \&quot;([a-z_]*)\&quot;(.*)/i){
            $line = &quot;INSERT INTO \n&quot;;
            $line =~ s/\&quot;/\\&quot;/g;
            $line =~ s/\&quot;/\'/g;
        }else{
            $line =~ s/\'\'/\\'/g;
        }
        $line =~ s/([^\'])\'t\'(.)/THIS_IS_TRUE/g;
        $line =~ s/THIS_IS_TRUE/1/g;
        $line =~ s/([^\'])\'f\'(.)/THIS_IS_FALSE/g;
        $line =~ s/THIS_IS_FALSE/0/g;
        $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
        print $line;
    }
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memindahkan Pangkalan Data SQLite3 Saya dengan Mudah ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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