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 スロークエリ: スロークエリを有効にする

1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...

有名なブログの再設計例 28 件

1. Webデザイナーウォール 2. Veerleのブログ 3. チュートリアル9 4. UXブース...

MySQL実践ウィンドウ関数SQL分析クラスの生徒のテストの成績と生活費

目次1. 背景2. テーブル作成ステートメントとデータ挿入テーブルを作成するデータの挿入3. ウィン...

IE8でラベルの背景画像が表示されない問題の解決方法

今日、ちょっとした問題に遭遇し、長い間苦労しました。そのことを皆さんにシェアしたいと思います。 a ...

vue3.0 で要素を使用するための完全な手順

序文: vue3.0の要素フレームワークを使用します。要素はvue2.0をサポートしており、vue3...

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

CSS3 アニメーション ボールローリング JS コントロールアニメーション一時停止

CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...

Centos7 システムでの python2 と python3 の共存

最初のステップは、Python のバージョン番号とインストール パスを確認することです。 上記のビュ...

ボタンの権限判定を実装するためのVueカスタムv-has命令

アプリケーションシナリオバックグラウンド管理システムを例にとると、各ユーザーには異なるボタン権限があ...

Nginx ドメイン名の書き換えとワイルドカードドメイン名の解決を設定する方法

この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...

DockerにRedisコンテナをインストールするための実装手順

目次DockerにRedisをインストールする1. Redisイメージを見つける2. Redisイメ...

MySQL 接続で認証失敗エラーが発生する場合の分析と解決方法

[問題の説明]アプリケーション側では、次のエラーが時々表示されます。メソッド 'mysql_...

js はマウスインとマウスアウトによるカード切り替えコンテンツを実装します

この記事では、マウスでカード内外のコンテンツを切り替えるためのjsの具体的なコードを紹介します。具体...

js オブザーバーモードの紹介と使用

目次定義2. 使用シナリオ3. 例を挙げる4. コーディング定義オブザーバー パターンは 1 対多の...

MySQL トランザクション分離レベルの表示と変更の例

トランザクション分離レベルを確認するMySQL では、'%tx_isolation%'...