OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

トランザクション処理、分析、AIワークロードに最適な分散データベース

デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
アイコン

OceanBaseデータベース

V4.3.5

    OceanBase logo

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについて法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBaseデータベース
    3. V4.3.5
    アイコンOceanBaseデータベース
    V 4.3.5
    • V 4.3.5

    DBCATを使用してOceanBaseのテーブル構造をMySQLデータベースに移行する

    最終更新日:2026-04-09 02:53:56  更新
    シェア
    このページの内容
    環境準備
    OceanBaseデータベースのMySQL互換モードテナントからのテーブル構造のエクスポート
    MySQLデータベースのインポート
    微分結果の検証

    折りたたみ

    シェア

    DBCATは、軽量なコマンドラインツールであり、データベース間のDDL変換やSchema比較などの機能を提供します。ここでは、DBCATを使用したテーブル構造の移行を例として説明します。

    DBCATのインストールパッケージファイル名はdbcat-[バージョン番号]-SNAPSHOT.tar.gzで、ダウンロード後に解凍すれば使用可能です。実行可能ファイル名はdbcatです。

    注意

    DBCATはOMSのコンポーネントの一つであり、Community Edition環境ではOMSを使用したエクスポートを推奨します。

    環境準備

    DBCATはCentOS、macOS、Windows上で動作します。JDK 1.8以降のバージョンがインストール済みである必要があります。OpenJDKを使用する場合は、インストール後に環境変数JAVA_HOMEを設定してください。

    CentOSにOpenJDKをインストールする例:

    $sudo yum -y install java-1.8.0-openjdk.x86_64
    
    $which java
    /usr/local/java/jdk1.8.0_261/bin/java
    
    echo 'export JAVA_HOME=/usr/local/java/jdk1.8.0_261/' >> ~/.bash_profile
    . ~/.bash_profile
    

    インストールファイルを解凍します:

    tar zxvf dbcat-1.8.0-SNAPSHOT.tar.gz
    cd dbcat-1.8.0-SNAPSHOT/
    chmod +x bin/dbcat
    
    $tree -L 3 --filelimit 30
    .
    ├── bin
    │   ├── dbcat
    │   ├── dbcat.bat
    │   └── dbcat-debug
    ├── conf
    │   ├── dbcat.properties
    │   └── logback.xml
    ├── docs
    │   ├── README.docx
    │   ├── README.md
    │   └── README.txt
    ├── LEGAL.md
    ├── lib [45 entries exceeds filelimit, not opening dir]
    ├── LICENSE
    ├── meta
    │   └── README
    └── NOTICE
    
    5 directories, 12 files
    

    インストールファイル内には、以下のディレクトリが含まれています。

    ディレクトリ名 説明
    bin 実行可能ファイルのディレクトリ。
    conf ログファイル設定ディレクトリ。
    lib 実行時に依存するパッケージ。
    meta オフライン変換シナリオで、辞書テーブルデータをエクスポートします。
    ~/output SQLファイルとレポートファイルは、実行時に生成されます。

    OceanBaseデータベースのMySQL互換モードテナントからのテーブル構造のエクスポート

    DBCATにはオンライン変換機能があり、これはDBCATがソース側のデータベースに直接接続し、データベース内のオブジェクトをエクスポートできることを指します。オブジェクト数が非常に多い場合(例えば1万を超える場合)、エクスポートプロセスは少し遅くなる可能性があります。

    dbcatのエクスポートコマンドは以下のとおりです:

    bin/dbcat convert -H<host> -P<port> -u<user> -p<******>  -D <database> --from <from> --to <to> --all
    

    コマンドbin/dbcat help convert実行すると、より多くのパラメータ情報を確認できます。

    必須パラメータ:

    オプション パラメータの有無 日本語の説明
    -H/--host Y データベースサーバーのIPアドレス
    -P/--port Y データベースサーバーのポート
    -u/--user Y データベースにログインするためのユーザー名
    -t/--tenant Y OceanBaseクラスタへの接続にはテナント名が必要です
    -c/--cluster Y OceanBaseクラスタへの接続にはクラスタ名が必要です
    -p/--password Y データベースにログインするためのパスワード
    -D/--database Y データベース名(ソースデータベース)、DB2ではデータベース名とスキーマ名を区別する必要があります
    --service-id Y Oracleデータベースへの接続にはサービスIDが必要です
    --service-name Y Oracleデータベースへの接続にはサービス名が必要です
    --as-sysdba N Oracleデータベースのsysdbaロールでの接続
    --sys-user Y OceanBaseクラスタのシステムテナントにログインするためのユーザー名
    --sys-password Y OceanBaseクラスタのシステムテナントにログインするためのパスワード
    --schema Y スキーマ名(ソースデータベース)、DB2以外ではスキーマ名とデータ名は同じです
    --from Y ソースデータベースのタイプ
    --to Y ターゲットデータベースのタイプ
    --all N すべてのデータベースオブジェクト

    オプションパラメータ:

    オプション パラメータの有無 日本語の説明
    -f/--file Y SQLファイルの出力パス
    --offline N オフラインモードを使用する
    --target-schema Y スキーマ名(ターゲットデータベース)
    --table Y エクスポートするテーブル
    --view Y エクスポートするビュー
    --trigger Y エクスポートするトリガー
    --synonym Y エクスポートするシノニム
    --sequence Y エクスポートするシーケンス
    --function Y エクスポートする関数
    --procedure Y エクスポートするストアドプロシージャ
    --dblink Y すべてのDBLinkをエクスポート
    --type Y エクスポートするtype
    --type-body Y エクスポートするtype body
    --package Y エクスポートするpackage
    --package-body Y エクスポートするpackage body
    --no-quote N 生成されるDDLには引用符を付けない
    --no-schema N 生成されるDDLにはスキーマ名を付けない
    --target-schema Y 生成されるDDLには指定されたスキーマ名を使用
    --exclude-type Y --allと組み合わせて使用します。例:--all --exclude-type 'TABLE'は、TABLEタイプを除外することを意味します

    ここでは、OceanBaseデータベースのMySQL互換モードテナントV4.0.0のtestデータベース内のすべてのオブジェクトの構造をエクスポートし、それをMySQLデータベースV5.7に移行する例を示します。

    bin/dbcat convert -H 172.30.xxx.xxx  -P 2883 -uroot -pxxxxx -D test --from obmysql40 --to mysql57 --all
    

    特記事項:

    • dbcatはデータベースホストに直接インストールする必要はありません。データベースホストに直接接続できるホストにインストールするだけで済みます。

    • パラメータの--fromと--toはソース側とターゲット側のデータベースの種類であり、バージョン番号まで詳細に指定する必要があります。以下の表は、現在dbcatがサポートしているソース側とターゲット側のデータベースの種類を紹介しています。

      ソースデータベースの種類 ターゲットデータベースの種類
      TiDB OBMYSQL
      PostgreSQL OBMYSQL
      SYBASE OBORACLE
      MySQL OBMYSQL
      Oracle OBORACLE
      Oracle OBMYSQL
      DB2 for i OBORACLE
      DB2 LUW OBORACLE
      DB2 LUW OBMYSQL
      OBMYSQL MySQL
      OBORACLE Oracle
      DRDS OBMYSQL
      POLARDB-X OBMYSQL
      Alibaba Cloud ApsaraDB for MySQL OBKV
      HBase OBKV
      POLARDB for Oracle OBORACLE

      そのうちOBMYSQLはOceanBaseデータベースのMySQL互換モードテナント、OBORACLEはOceanBaseデータベースのOracle互換モードテナントを指します。

    • 以下の表は、現在サポートされているソース側とターゲット側のデータベースの詳細なバージョンを紹介しています。

      データベースタイプ データベースバージョン
      TiDB tidb4
      tidb5
      PostgreSQL pgsql8
      pgsql82
      pgsql9
      pgsql91
      pgsql10
      pgsql11
      pgsql12
      pgsql13
      pgsql14
      pgsql15
      SYBASE sybase15
      DB2 IBM i db2ibmi71
      DB2 LUW db2luw970
      db2luw1010
      db2luw1050
      db2luw111
      db2luw115
      MySQL mysql56
      mysql57
      mysql80
      Oracle oracle9i
      oracle10g
      oracle11g
      oracle12c
      oracle11gr1
      oracle11gr2
      oracle12cr1
      oracle12cr2
      oracle18c
      oracle19c
      oracle21c
      OBMySQL obmysql14x
      obmysql21x
      obmysql22x
      obmysql200
      obmysql211
      obmysql2210
      obmysql2230
      obmysql2250
      obmysql2271 ~ obmysql2277
      obmysql30x
      obmysql31x
      obmysql32x
      obmysql322
      obmysql324
      obmysql40
      obmysql410
      obmysql4102
      obmysql420
      obmysql421
      obmysql424
      obmysql425
      obmysql4251
      obmysql430
      obmysql431
      obmysql432
      obmysql433
      obmysql434
      obmysql435
      obmysql4351
      obmysql4352
      OBOracle oboracle2220
      oboracle2230
      oboracle2250
      oboracle2270 ~ oboracle2277
      oboracle21x
      oboracle22x
      oboracle30x
      oboracle31x
      oboracle32x
      oboracle322
      oboracle40
      oboracle410
      oboracle420
      oboracle422
      oboracle430
      oboracle431
      oboracle432
      POLARDB-X polarx10
      polarx20
      POLARDB-ORACLE

      注意

      dbcatを実行する際、POLARDB-ORACLEはデータベースバージョン番号以外の必要なパラメータ設定がpgsqlと一致します。

      polardb_o8
      polardb_o82
      polardb_o9
      polardb_o91
      polardb_o10
      polardb_o11
      polardb_o12
      polardb_o13
      polardb_o14
      polardb_o15
      HBase hbase094
      hbase1x
      hbase2x
      Alibaba Cloud ApsaraDB for HBase alihbase1x
      alihbase2x

    実行後の出力ファイルは、ユーザーのhomeディレクトリのoutput配下に作成されます。

    $tree ~/output/dbcat-20xx-xx-xx-164533/
    /home/qing.meiq/output/dbcat-20xx-xx-xx-164533/
    ├── tpccdb
    │   └── TABLE-schema.sql
    └── tpccdb-conversion.html
    
    1 directory, 2 files
    

    MySQLデータベースのインポート

    DBCATでエクスポートされたファイル形式はSQLファイルであり、sourceコマンドを使用できます。例:

    MySQL [test]> source TABLE-schema.sql
    Query OK, 0 rows affected (0.044 sec)
    

    注意

    SQLファイルが現在のディレクトリにない場合は、絶対パスを使用する必要があります。

    微分結果の検証

    例:あるテーブル構造がMySQLとOceanBaseデータベースでどのように記述されているかを確認します。

    ソースデータベースOceanBaseのテーブルbmsql_customerのテーブル構造を確認します:

    obclient [test]> desc bmsql_customer;
    +----------------+---------------+------+-----+-------------------+-----------------------------+
    | Field          | Type          | Null | Key | Default           | Extra                       |
    +----------------+---------------+------+-----+-------------------+-----------------------------+
    | c_w_id         | bigint(20)    | NO   | PRI | NULL              |                             |
    | c_d_id         | bigint(20)    | NO   | PRI | NULL              |                             |
    | c_id           | bigint(20)    | NO   | PRI | NULL              |                             |
    | c_discount     | decimal(4,4)  | YES  |     | NULL              |                             |
    | c_credit       | char(2)       | YES  |     | NULL              |                             |
    | c_last         | varchar(16)   | YES  |     | NULL              |                             |
    | c_first        | varchar(16)   | YES  |     | NULL              |                             |
    | c_credit_lim   | decimal(12,2) | YES  |     | NULL              |                             |
    | c_balance      | decimal(12,2) | YES  |     | NULL              |                             |
    | c_ytd_payment  | decimal(12,2) | YES  |     | NULL              |                             |
    | c_payment_cnt  | bigint(20)    | YES  |     | NULL              |                             |
    | c_delivery_cnt | bigint(20)    | YES  |     | NULL              |                             |
    | c_street_1     | varchar(20)   | YES  |     | NULL              |                             |
    | c_street_2     | varchar(20)   | YES  |     | NULL              |                             |
    | c_city         | varchar(20)   | YES  |     | NULL              |                             |
    | c_state        | char(2)       | YES  |     | NULL              |                             |
    | c_zip          | char(9)       | YES  |     | NULL              |                             |
    | c_phone        | char(16)      | YES  |     | NULL              |                             |
    | c_since        | timestamp     | NO   |     | CURRENT_TIMESTAMP | ON UPDATE CURRENT_TIMESTAMP |
    | c_middle       | char(2)       | YES  |     | NULL              |                             |
    | c_data         | varchar(500)  | YES  |     | NULL              |                             |
    +----------------+---------------+------+-----+-------------------+-----------------------------+
    21 rows in set (0.004 sec)
    

    ターゲットデータベースMySQLのテーブルbmsql_customerの作成SQLを確認します:

    MySQL [test]> show create table bmsql_customer \G
    *************************** 1. row ***************************
           Table: bmsql_customer
    Create Table: CREATE TABLE `bmsql_customer` (
      `c_w_id` bigint(20) NOT NULL,
      `c_d_id` bigint(20) NOT NULL,
      `c_id` bigint(20) NOT NULL,
      `c_discount` decimal(4,4) DEFAULT NULL,
      `c_credit` char(2) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_last` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_first` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_credit_lim` decimal(12,2) DEFAULT NULL,
      `c_balance` decimal(12,2) DEFAULT NULL,
      `c_ytd_payment` decimal(12,2) DEFAULT NULL,
      `c_payment_cnt` bigint(20) DEFAULT NULL,
      `c_delivery_cnt` bigint(20) DEFAULT NULL,
      `c_street_1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_street_2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_city` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_state` char(2) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_zip` char(9) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_phone` char(16) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_since` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `c_middle` char(2) COLLATE utf8_unicode_ci DEFAULT NULL,
      `c_data` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`c_w_id`,`c_d_id`,`c_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    1 row in set (0.01 sec)
    

    比較した結果、一致しています。

    前のトピック

    OMSを使用してOceanBaseデータベースのOracleテナントからMySQLデータベースへ増分データを移行する
    最後

    次のトピック

    DataXを使用してOceanBaseのテーブルデータをMySQLデータベースに移行する
    次
    このページの内容
    環境準備
    OceanBaseデータベースのMySQL互換モードテナントからのテーブル構造のエクスポート
    MySQLデータベースのインポート
    微分結果の検証