MySQL への SQLite の移行。

DDD
リリース: 2024-11-03 18:23:02
オリジナル
528 人が閲覧しました

自己紹介します。私はアルフレッド リベロスです。数年間プログラミングについて学んでいます。現在、リオ テルセロ高等商業学校でソフトウェア開発の高等技術者を勉強しています。以下に私が取り組んだ課題について説明します。

に出会った。

タイトルにあるように、私の目標は SQLite データベースを MySQL に移行することでした。これは、私が勉強しているデータベース科目の課題から生まれました。

私が選択したデータベースは、ゲーム SQL Murder Mystery に属します。このゲームは、遊び心のある方法で SQL スキルを教えるために作成されており、このリンクから入手でき、開発者が提供するデータベースをダウンロードできます。

このデータベースは、それ自体がゲームではありますが、データベースに関連する概念を教育および学習するための貴重なリソースであるため、その教育的方向性からこのデータベースを選択しました。

この課題の最初のステップは、SQLite 用 DB ブラウザ を使用して、MySQL Workbench と互換性のある形式でデータベースをエクスポートできるかどうかを調査することでした。 DB Browser から SQL スクリプトを生成することはできましたが、それを Workbench にインポートすると、このような大きなファイルの管理の複雑さに加えて、特に構文とデータの整合性など、多くの問題が発生しました。

Migrar de SQLite a MySQL.

Migrar de SQLite a MySQL.

私はこのファイルを研究し、構文の問題を解決しようとしましたが、最終的には別のアプローチを探す必要があるという結論に達しました。

次のステップは、sqlite3 関数を使用して、ターミナル (Linux) 経由で SQL スクリプトをエクスポートすることでした。

Migrar de SQLite a MySQL.

今回はスクリプトの構文が大幅に改善されましたが、それでも大きな問題は、常に何らかの新しい問題が発生することです。

両方のアプローチが使い果たされたので、私は時間をかけて他の代替案を熟考し、評価しました。私は、SQLite と MySQL の両方をサポートしている Python がこの移行に効果的なツールである可能性があると考え、プロセスを自動化するアルゴリズムの設計を開始しました。

その後、このトピックに関する情報を探しました。まず、それが可能なアプローチであることを確認し、目標を達成できるアルゴリズムを設計できるように情報を収集しました。

ここで、私が目標を達成するために使用した新しいアプローチについて簡単に説明します。
私が最初にしたことは、自分の研究を段階的に文書化することでした。これにより、オブジェクト リレーショナル マッピング (ORM) と呼ばれるものについて学びました。

オブジェクト リレーショナル マッピング (ORM) は、オブジェクト指向プログラミング言語で互換性のない型システム間でデータを変換するためにプログラミングで使用される手法です。データベースのコンテキストでは、ORM を使用すると、SQL クエリを直接使用するのではなく、オブジェクトを通じてリレーショナル データベースと対話できるようになります。これにより、より直観的かつ効率的にデータを操作できる方法が提供されます。

私の場合、SQLAlchemy を使用して Python でアルゴリズムの開発を実行し、結果を分析したところ、次の重要なポイントが見つかりました。

  • テーブルのようなクラス:
    • 定義した各クラス (crime_scene_report、drivers_license など) はデータベース内のテーブルに対応します。クラス属性はテーブルの列を表します。
  • 行としてのインスタンス:
    • クラスの各インスタンスは、対応するテーブル内の行を表します。 SQLite からデータをクエリすると、これらのクラスのインスタンスが取得されるため、データの操作がより直感的でオブジェクト指向になります。
  • 挿入および更新操作:
    • merge() などのメソッドを使用すると、これらのインスタンスを直接操作できます。 SQL クエリを手動で作成しなくても、新しいレコードを挿入したり、既存のレコードを更新したりできるため、コードが簡素化され、読みやすくなります。
  • 人間関係の管理:
    • SQLAlchemy は、クラス内の属性を通じてテーブル間の関係 (外部キーなど) を自動的に処理し、関連するレコード間の移動を容易にします。

Migrar de SQLite a MySQL.

いくつかの試行錯誤を経たプロセス中に注意すべき重要な点は、問題が発生する可能性のある場所を特定するのに役立つため、アプローチを理解し、書かれたコードを評価することが重要であるということです。少し考えて立ち止まった後、問題はおそらくデータベース構造に関連しているという結論に達しました。しかし、私の頭の中に 1 つの疑問が残りました。整合性の問題やさまざまなエラーが発生しているにもかかわらず、このデータベースが SQLite でどのように動作するのでしょうか?答えは簡単です。MySQL とは異なり、SQLite では主キーのないテーブルを作成できるため、両方のシステム間のデータ管理に大きな違いが生じます。 SQLite のこの柔軟性により、MySQL のような制限の厳しい環境では即時にエラーが発生する可能性がある問題が隠蔽されます。

もう 1 つの違いは、MySQL はデータ構造と型に対してより厳密なアプローチを採用していることです。たとえば、フィールドを INTEGER として定義すると、数値以外の値を挿入できなくなります。

相違点は続いています。相違点を理解した結果、このアプローチを機能させるにはデータベースを変更する必要があることがわかりました。このため、テーブルを変更し、テーブルが MySQL 標準に準拠していることを確認することにしました。まず最初に、それぞれに主キーがあり、両方のデータ型が同じであることを確認してください。

追加します...同じことをしたい場合は、SQLite ではテーブルを直接変更できないことに留意してください。これも MySQL との大きな違いです。

最後にスクリプトと Python で書かれたアルゴリズムを調整したので、実行に進みました。結果: ゲーム データベースは MySQL に移行されました。

この課題により、私の技術スキルが向上しただけでなく、データベース管理システムの違いと、それらがデータベースの整合性にどのような影響を与えるかを理解することの重要性も学びました。

SQLite から MySQL へデータベースを移行した私の経験が役に立ち、刺激になったことを願っています。それぞれの課題は、プログラミングの世界で学び、成長する機会を提供します。
読んでいただきありがとうございます。また次回まで!

以上がMySQL への SQLite の移行。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!