sqlite を mysql スクリプトに移行する方法

sqlite を mysql スクリプトに移行する方法

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。

パーレル
#
# https://stackoverflow.com/a/87531/5742651 に基づく
# 使用方法: sqlite3 .dump database_name.sqlite3 | perl sqlite2mysql.pl | mysql -u root -p $import_database_name
#
# 次の行を無視します:
# トランザクションを開始 
# 専念 
#sqlite_シーケンス 
# ユニークなインデックスを作成する
# プラグマ foreign_keys=OFF
# "テーブル名/フィールド" => `テーブル名/フィールド`
# ブール値 't' と 'f' => 1 と 0
# AUTOINCREMENT => AUTO_INCREMENT
# varchar => varchar(255)
# CREATE TABLE テーブル... => DROP TABLE テーブル; CREATE TABLE テーブル...
# 速度を上げるために挿入SQLを複数の挿入にマージします
# テーブルに挿入 VALUES('val1');
# テーブル VALUES('val2') に INSERT INTO テーブル VALUES('val1'), ('val2'), ('val3');
# テーブルに VALUES('val3') を挿入します。
私の$open=0;
私の$line_cache = '';
# スピードアップのために
"SET GLOBAL max_allowed_pa​​cket=209715200;\n" を印刷します。
#print "SET AUTOCOMMIT=0;\n";
($line = <>){
  if (($line !~ /PRAGMA foreign_keys=OFF/) && ($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
   ($line =~ /CREATE TABLE \"([a-z_0-9]*)\"(.*)/){の場合
   $name = "\`$1\`";
   $sub = $2;
   $sub =~ s/varchar([^(])/varchar(255)$1/g;
   $line = "$name が存在する場合はテーブルを削除します。\n$name$sub テーブルを作成します\n"; 
   }
   elsif ($line =~ /CREATE VIEW ([a-z_0-9]*)(.*)/){
   $name = "\`$1\`";
   $sub = $2;
   $line = "$name が存在する場合はビューを削除します。\n$name$sub のビューを作成します\n";
   }
   elsif ($line =~ /INSERT INTO \"([a-z_]*)\" VALUES(.*);/){
        $open == 0 の場合
          オープン = 1;
       $line_cache .= "\`$1\` の値 $2 に挿入";
        } それ以外 {
          $line_cache .= ", $2";
        }
        次;
   }それ以外{
   $line =~ s/\'\'/\\\'/g;
   }
    $open == 1の場合{
       $open = 0;
       $line = $line_cache.";\n".$line;
       $line_cache = '';
    }
   $line =~ s/\"/`/g;
   $line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
   $line =~ s/THIS_IS_TRUE/1/g;
   $line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
   $line =~ s/THIS_IS_FALSE/0/g;
   $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
   $line を印刷します。
  }
}
#print "SET AUTOCOMMIT=1;\n";

要約する

上記は、編集者が紹介した sqlite から mysql スクリプトに移行する方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQLデータベースを別のマシンに移行する方法の詳細な説明
  • MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます
  • MySQLdump コマンドを使用した MySQL データの移行
  • MySQLデータをOracleに移行する正しい方法
  • データファイルのコピーによる MySQL データベースの移行例
  • MySQLデータベースをOracleデータベースに移行する
  • mysql5.5 データベースデータディレクトリ移行方法の詳細な説明
  • MySQLデータベースのデータフォルダを移行するための詳細な手順
  • MySQLデータ移行方法とツールの分析

<<:  Svelte の Defer Transition を Vue で実装する方法

>>:  独自の YUM リポジトリを作成する手順

推薦する

更新とデータ整合性処理のためのMySQLトランザクション選択の説明

MySQL のトランザクションはデフォルトで自動的にコミットされます (autocommit = 1...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

弾幕効果を実現するためのjQuery

この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...

VueでTypeScriptを使用する方法

導入近年、TypeScript を求める声がますます高まり、TypeScript はフロントエンドに...

Dockerfile に基づいて Tomcat イメージを構築する方法

Dockerfile は Docker イメージを構築するために使用されるファイルです。コマンドパラ...

Linux での Python のアップグレードと pip のインストールの詳細な説明

Linuxバージョンのアップグレード: 1. まず、Linuxオペレーティングシステムに付属するPy...

MySQLトランザクションとMySQLログの詳細な説明

取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...

LinuxサーバーでRabbitMQ管理ページにアクセスできない問題を解決

私のプロジェクトの特定の機能ではサーバーが rabbitmq にメッセージを送信する必要があるため、...

Nodeはリクエスト追跡にasync_hooksモジュールを使用します

async_hooks モジュールは、Node.js バージョン 8.0.0 に正式に追加された実験...

HTML テーブル境界コントロールの詳細な説明

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

Mysql 更新マルチテーブル共同更新方法の概要

次に、2 つのテーブルを作成し、一連の SQL 文を実行します。SQL 文の実行後にテーブル内のデー...

HTMLインライン要素とブロックレベル要素の基本概念と使用例

HTML タグには、インライン要素とブロックレベル要素の 2 種類があります。まず、インライン要素と...

JDKネイティブスレッドプールのバグを修正するTomcatの実装原理

処理能力と同時実行性を向上させるために、Web コンテナは通常、リクエストを処理するタスクをスレッド...