MySQLからOracleへデータを移行する際の注意点
1. 自動増加するデータ型の扱い
MYSQLには、レコード挿入時にこのフィールドを操作する必要はなく、データ値が自動的に取得されます。 ORACLE には自動増加するデータ型がありません。レコードを挿入するときは、このフィールドにシーケンス番号の次の値を割り当てる必要があります。
CREATE SEQUENCE シリアル番号の名前 (できればテーブル名 + シリアル番号マーク)
INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
INSERT ステートメントは、このフィールド値を次のように挿入します: シリアル番号の名前.NEXTVAL
2. 一重引用符の処理
MYSQL では二重引用符を使用して文字列をラップできますが、ORACLE では一重引用符のみを使用して文字列をラップできます。文字列を挿入または変更する前に、一重引用符を置換する必要があります。つまり、出現する一重引用符をすべて 2 つの一重引用符に置き換えます。もちろん、Convert Mysql to Oracle ツールを使用する場合は、この問題を考慮する必要はありません
3. 長い文字列の処理
ORACLE では、INSERT および UPDATE 中に操作可能な最大文字列長は以下です。 4,000 のシングルバイト。より長い文字列を挿入したい場合は、フィールドに CLOB タイプを使用し、ORACLE に付属の DBMS_LOB パッケージからメソッドを借用することを検討してください。変更されたレコードを挿入する前に、空でないことと長さを判断する必要があります。空にできないフィールド値や長さを超えるフィールド値は警告を発行し、最後の操作に戻る必要があります。
4. ページめくり SQL ステートメントの処理
MYSQL によるページめくり SQL ステートメントの処理は、LIMIT を使用して位置を開始し、番号を記録します。 ORACLE のページング SQL ステートメントの処理はさらに複雑です。各結果セットには、その位置を示す ROWNUM フィールドが 1 つだけあり、ROWNUM80 は使用できません。
以下は、分析後の 2 つのより優れた ORACLE ページング SQL ステートメントです (ID は一意のキーワードのフィールド名です):
ステートメント 1:
SELECT ID, FIELD_NAME,... .
FROM TABLE_NAME
WHERE ID IN (SELECT ID
FROM (SELECT ROWNUM AS NUMROW, ID
FROM TABLE_NAME
WHERE 条件 1
ORDER BY 条件 2)
WHERE NUMROW > 80
AND NUMROW ORD ER BY 条件 3 ;
ステートメント 2:SELECT *FROM ((SELECT ROWNUM AS NUMROW, c.*from (select FIELD_NAME,.. .FROM TABLE_NAMEWHERE 条件 1ORDER BY 条件 2 ) c ) WHERE NUMROW > 80 AND NUMROW ORDER BY 条件 3;5. 日付フィールドの処理 ORACLE の日付フィールドは、年と月を含む DATE のみを持ちます。日、時、分、秒の情報には、秒まで正確な現在のデータベースのシステム時刻を SYSDATE として使用します。 日付フィールドの数式は大きく異なります。 MYSQL は、DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY) を使用します。 ORACLE は、DATE_FIELD_NAME >SYSDATE - 7;6 を使用します。 MYSQL では、「% string%」のようなフィールド名を使用します。 '。ORACLE では、'% string%' のようなフィールド名も使用できます。ただし、このメソッドはインデックスを使用できないため、文字列比較関数 instr(field name ,'String')>0 を使用すると、さらに多くの値が得られます。正確な検索結果。 7. null 文字の処理 MYSQL の空でないフィールドにも空のコンテンツがあり、空のコンテンツは許可されません。 MYSQL の NOT NULL に従って ORACLE テーブル構造を定義すると、データのインポート時にエラーが発生します。そのため、データをインポートする際には、NULL文字であるかどうかを判断し、NULL文字である場合は空白文字に変更する必要があります。 Oracleをmysqlに移植する際の注意点お客様が使用しているデータベースがmysqlであり、開発した製品がoracleをサポートしているため、データベース環境をoracleからmysqlに移植する必要があります。移行プロセス中に次の問題が発生しました。初期設計およびコーディング プロセスでデータベースの移植性に注意を払っていれば、この場合は追加の作業を行う必要はありません。 1. Oracle から MySQL にデータベース環境を移植するときに発生する問題1. 大文字と小文字の区別 (サーバー OS が Linux の場合) 一般に、Oracle は大文字と小文字を区別しません。 Oracle を使用する場合、テーブル名とフィールド名は大文字と小文字が区別されないことがあります。このように、insert into tableName と insert into TABLENAME は同じ効果を持ちます。データの初期化スクリプトを実行すると、取得された結果は通常、大文字のテーブル名とフィールド名に変換されます。 しかし、MySQL では、使用されるオペレーティング システムの大文字と小文字の区別によって、データベース名とテーブル名の大文字と小文字の区別が決まります。データベースはデータ ディレクトリ内のディレクトリに対応し、データベース内の各テーブルはデータベース ディレクトリ内の少なくとも 1 つのファイル (ストレージ エンジンによっては複数の場合があります) に対応します。したがって、データベースまたはテーブルの使用は実際にはこれらのファイル (フォルダー) を操作することになるため、オペレーティング システムの大文字と小文字の区別によってデータベース名とテーブル名の大文字と小文字の区別が決まります。 Linux をカーネルとして使用するオペレーティング システムでは、大文字と小文字が区別されます。解決策は、MySQL のデータベース名を Oracle の場合と一致させ、テーブル名をアプリケーションの SQL 文字列のテーブル名と一致させることです。アプリケーションのフィールド名に二重引用符が使用されている場合は、二重引用符を含めてください。 SQL フィールド名の大文字と小文字は、二重引用符内の文字と一致している必要があります。アプリケーションが参照するテーブル名とフィールドの大文字小文字が統一されていない場合、大きな問題が発生します。
2. 予約語の違い
例えば、SQL言語の関数名(inteval、showなど)は予約語です。 Oracle の予約語はテーブル名およびフィールド名として使用でき、その使用には影響しません。ただし、MySQL の予約語をテーブル名およびフィールド名として使用すると、構文エラーが報告されます。
解決策は、SQL ステートメント内の予約語を「`」記号で囲むことです。これは、キーボードのタブ キーの上にあり、それがフィールド名の場合は、別のメソッド tablename.field name があります。このように:
insert into tablename (id, `interval`) value(…..
または
insert into tablename (id, tablename.inteval) value(…..
3. 自動拡張タイプの違い
Oracle にはシーケンスがありますが、mysql にはありませんが、auto_increment 属性があります。
場合によっては、Oracle のシーケンスを auto_increment 属性を使用するように変換することで問題を解決できる可能性があります。自動的に増加するデータ用の別のテーブル。
4. データ型の違い
MySQL には、Oracle のような varchar と numeric はありません。解決策は、置き換えることです。
5. インデックスの長さの制限の違い
MySQL 4.1.2 以降、MyISAM と InnoDB のテーブルのインデックスの長さは 1000 バイトを超えることはできません。バイトを超えると、次のようなエラーが報告されます:
エラー 1071 (42000): 指定されたキーが長すぎます; 最大キー長は 1000 バイトです
UTF-8 エンコードの場合、それは長さに相当します。 (UTF8 の 1 文字は 1000 バイト、つまり 3 バイトを占めるため) Oracle のインデックスの長さの制限は MySQL の制限よりもはるかに緩いです
解決策については、インデックスの定義を変更するか、どちらかで説明する必要はありません。
次に、データベースの互換性のために、データベースの設計において注意すべき点は何ですか?すでに使用されており、同時に 2 つのデータベースを維持したくない場合でも、複数のデータベースと互換性があることが製品のセールス ポイントになる可能性があります。
に準拠することが重要です。標準的な使用法
1. 標準的な使用法を遵守し、msyql の '' 記号の使用法など、特定のデータベース固有の使用法を使用しないようにします。別の例として、Oracle を使用してシーケンスを作成する場合があります。 , SELECT seq.nextval FROM DUAL; テーブルにデータを挿入する前に、クエリから取得した値をテーブルに挿入します。この使用法は、シーケンスのないデータベースには適していません。使用する必要がある場合は、完全に使用する必要があります。別の例として、Postgresql には拡張されたページング クエリがありますが、Oracle にはありません。
2. 予約語
データベース設計者は、テーブル名やフィールド名に予約語を使用しないように努める必要があります。
のように、テーブル名とフィールド名の前に「_」を追加して、この方法を使用する人もたくさんいます: create table _tablename (_id integer)。こうすることで、予約語に起因する問題が発生することはありません。
3. データベースの大文字と小文字の区別の問題を回避します
データベースのテーブル名とフィールド名を大文字にするか小文字にするかを選択し、データベースの設計とコーディングのプロセスで完全に統一します。
Convert Oracle to Mysql ツールを使用する場合は、「名前を大文字に変換」オプションの制御に注意してください

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
