ホームページ > データベース > mysql チュートリアル > SQLite3 データベースを MySQL に効率的に移行するにはどうすればよいですか?

SQLite3 データベースを MySQL に効率的に移行するにはどうすればよいですか?

DDD
リリース: 2025-01-03 02:53:42
オリジナル
400 人が閲覧しました

How Can I Efficiently Migrate My SQLite3 Database to MySQL?

SQLite3 からの効率的な MySQL 移行

SQLite3 から MySQL へのデータの移行は、特に適切なツールがなければ困難な作業になる可能性があります。この課題に対処するために、この記事では、SQLite3 と MySQL 構文の主な違いの包括的な概要を示し、その後、変換プロセスを容易にするサンプル Perl スクリプトを紹介します。

構文の相違

シームレスな移行を確実に行うには、いくつかの構文の違いを考慮する必要があります。以下を含みます:

  • SQLite3 の BEGIN TRANSACTION、COMMIT、sqlite_sequence、および CREATE UNIQUE INDEX は MySQL には存在しません。
  • SQLite3 のテーブル作成では CREATE TABLE/INSERT INTO "table_name" が使用されますが、 MySQL は CREATE TABLE/INSERT INTO table_name を使用します引用符は不要です。
  • MySQL のスキーマ定義には引用符は必要ありません。
  • MySQL では、SQLite3 の二重引用符とは異なり、INSERT INTO 句内の文字列に一重引用符が使用されます。
  • 文字列のエスケープ方法が異なります。
  • SQLite3 はブール値を次のように表します。 「t」と「f」ですが、MySQL は 1 と 0 を使用します。
  • SQLite3 の AUTOINCREMENT キーワードは、MySQL の AUTO_INCREMENT 構文と一致しています。

サンプル Perl スクリプト

次の Perl スクリプトは多くのことに対処しますこれらの構文の不一致を修正し、特定のデータセット用にカスタマイズできます:

#! /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;
    }
}
ログイン後にコピー

以上がSQLite3 データベースを MySQL に効率的に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート