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 リポジトリを作成する手順

推薦する

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

最新のmysql-5.7.21のインストールと設定方法

1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...

Vue3 AST パーサー - ソースコード分析

目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...

MySQL の大きなテーブルで大量のデータを一括削除する方法

質問はhttps://www.zhihu.com/question/440066129/answer...

WeChatアプレットがユーザーの移動軌跡を記録

目次設定を追加json 構成レイヤー構成の表示論理層の構成位置追跡をオンにする録音を開始開始座標を決...

ウェブページ要素の完全な分析

相対的な長さの単位それら説明: 相対的な長さの単位。現在のオブジェクト内のテキストのフォント サイズ...

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...

雨滴効果を実現する JavaScript キャンバス

この記事では、雨滴効果を実現するためのJavaScriptキャンバスの具体的なコードを参考までに紹介...

MySQLクエリ制御ステートメントの詳細なグラフィック説明

mysql クエリ制御ステートメントフィールド重複排除 **キーワード: 明確** 構文: テーブル...

MySQL ページングパフォーマンスの調査

一般的なページング方法: 1. エスカレーター方式エスカレーター方式では通常、前のページ/次のページ...

ZabbixはSNMPに基づいてLinuxホストを監視します

序文: Linux ホストは、エージェント プログラムをインストールする場合でも、SNMP を使用す...

ネイティブ JavaScript を使用して計算機のサンプル コードを開発する

計算機の主な機能は数値計算を実行することです。計算機機能の Web インスタンスを開発すると、js ...

JavaScript で Baidu Maps API にアクセスする方法と手順

目次1. Baidu Map API アクセス2. HTML で Baidu Map API を使用...