簡単な説明 適切な読者: モバイル開発 sqlite3 データを mysql に移行する場合、多くの構文上の問題が発生します。一度にすべての問題をリストすることは不可能です。誰もが異なる問題に遭遇するため、この記事ではできるだけ多くの問題をリストアップします。読者はこの記事を参考にして、問題が発生するかどうかを事前に予測することができます。何が起こるかを知っておくと、データの移行後に発生する可能性のある予期しない問題を回避または軽減するのに役立ちます。問題リストを見ると、どのような問題を解決する必要があるかがわかります。参考までに解決策も提供します。移行の問題には、誰もが異なる問題に遭遇するため、万能の解決策はありません。解決策の中に矛盾する問題が同時に存在する場合、問題になります。 さて、早速本題に入りましょう! 質問リスト 1. sqlite3 によってダンプされたさまざまな変数 (BEGIN TRANSACTION、COMMIT など) は、mysql では認識されません。 2. sqliteデータベースデータは隠しフィールドrowidをエクスポートできません 3. sqliteデータベースのデータエクスポート形式は、一重引用符や二重引用符など、他のデータベースと互換性がありません。 4. エクスポートされた sqlite データには、 5. エスケープ文字「\」などの特殊記号処理 6. テーブルフィールドの長さ制限が異なる 7. データ書き込み効率 問題解決 まず、sqliteStudio や Navicat などのツールは使用できません。ここでは、シェル コマンドを使用してコンテンツ生成を直接回避できます。
同時に、シェル メソッドを使用すると、非常に少ないコードで実装できます。 1. フィールド列名が出力されない問題を解決する sqlite3コマンド「
次に、次のように文字列置換によって列名を取得します。 変数はCOLS = name、descriptionであると仮定します。 2. 一重引用符と二重引用符の問題を解決する sqlite3コマンド「
この方法は、シングルクォートとダブルクォートの問題を解決できます。ここでは、シングルクォートを均一に直接出力します。 3. sqlite3のデフォルトフィールドrowidが表示されない問題を解決します。ここでは、rowidを直接idに変更します。 現在のモードを.dump挿入モードに設定する sqlite3コマンド「
4. シェル文字列コマンドを使用して、以前に取得した列名を次のSQL文に追加します。 変更後は次のようになります。
5. エスケープ文字の処理 データベース内のデータにエスケープ文字が含まれている場合、例: このスクリプトは主に上記1〜5の問題を解決します。必要に応じてスクリプトを変更できます。 #!/bin/sh SQLite = sqlite3 if [ -z "$1" ] ; then echo 使用法: $0 sqlite3.db 出口 フィ DB="$1" テーブル = `"$SQLITE" "$DB" .tables` $TABLES内のTABLEに対して、 CREATE=`"$SQLITE" "$DB" "SELECT sql FROM sqlite_master WHERE type=\"table\" AND name = \"$TABLE\";"` echo $CREATE";" | カット -d'=' -f2 | sed "s/^CREATE TABLE $TABLE (/CREATE TABLE $TABLE (id int auto_increment 主キー ,/g" COLS=`"$SQLITE" "$DB" "pragma table_info($TABLE)" | cut -d'|' -f2 ` COLS_CS=`echo $COLS | sed 's/ /,/g'` echo ".mode insert \n.header on \n select rowid as id,$COLS_CS from $TABLE;\n" | "$SQLITE" "$DB" | sed "s/^INSERT INTO \"table\"/INSERT INTO $TABLE /g" | 's#\\#\\\\#g' を実行します 終わり 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Linux CRM デプロイメント コードの詳細な説明
今日、Baidu でページを検索したところ、ページが削除されていたため、当然 Baidu スナップシ...
エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...
1. セレクターを調整するコンビネータを使用すると、セレクターの説明をより正確に記述できます (C...
目次1. 概念をすぐに認識する: 2. ローカルフィルター: 3. グローバルフィルター: 4. 拡...
目次1. 実施計画の概要2. 実行計画の実践id:選択タイプ:テーブル:タイプ:可能なキー:鍵:キー...
AOP の紹介AOP (アスペクト指向プログラミング) の主な機能は、コアビジネスロジックモジュール...
弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...
Nginx によるソケット ポート転送の一般的なシナリオ: オンライン学習アプリケーションでは、通常...
序文このチュートリアルでは最新バージョンをインストールします。 NAS は非常に安定して動作するので...
この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...
1. Ubuntu Server 18.04.5 LTS システムのインストールUbuntuはデスク...
MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...
(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...
非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...
WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...