---
title: "SQLite を Oracle にブラウザで移行"
description: "SQLite のデータベースを Oracle に移行。.db ファイルかダンプを同じテーブル、キー、データを持つスクリプトに変換し、すべての変更をレポートします。"
canonical: https://intosql.com/ja/sqlite-to-oracle
last_updated: 2026-10-15
---

# SQLite を Oracle にブラウザで移行

SQLite データベースファイル (.db、.sqlite、.sqlite3) または sqlite3 の .dump が書き出す SQL をドロップすると、同じテーブル、キー、インデックス、データを持つ Oracle スクリプトをダウンロードできます。各列には値が収まる型を付け、Oracle がそのまま保持できない値はすべてレポートに記載されます。

[SQLite から Oracle への移行ガイド](https://intosql.com/docs/migrations/sqlite-to-oracle)

[SQLite から Oracle へのデータ型](https://intosql.com/docs/types/sqlite-to-oracle)

## SQLite から Oracle で変わること

各行はコンバーターが適用するルールです。ルールによってデータが変わったときにレポートに書かれる行も示します。

| SQLite では | Oracle では | レポートの行 |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | 列のすべての値が収まる型 |  |
| BOOLEAN, BOOL | 0 と 1 の CHECK 付きの NUMBER(1) |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | すべての値が収まれば VARCHAR2(n CHAR)、それ以外は CLOB |  |
| TEXT and VARCHAR(n) longer than 4000 bytes | すべての値が 4000 バイト (キーでは 750 文字) に収まれば VARCHAR2(4000 CHAR)、それ以外は CLOB | `text_as_lob` |
| DECIMAL(p,s), NUMERIC | すべての値が収まれば正確な型、それ以外は double |  |
| BLOB, and columns holding bytes | BLOB |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | 値の内容に応じて DATE または TIMESTAMP(p) |  |
| JSON holding JSON text | CLOB |  |
| Infinity in REAL columns | BINARY_DOUBLE_INFINITY として保持 |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | GENERATED BY DEFAULT ON NULL AS IDENTITY、最大の ID または sqlite_sequence の値の後から継続 |  |
| COLLATE NOCASE | 厳密な比較 | `case_insensitive_collation` |
| generated columns | 仮想列 | `stored_as_virtual` |
| generated columns with functions IntoSQL doesn't write, and the || operator | 普通の列 | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | デフォルト値なし | `default_not_translated` |
| CHECK constraints | 変換済み |  |
| CHECK constraints with functions IntoSQL doesn't write | 作成しない | `check_skipped` |
| partial and expression indexes | 作成しない | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | データの後に ENABLE NOVALIDATE で作成してから検証 |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | 削除 | `foreign_key_action_unsupported` |
| empty strings and empty blobs | NULL | `empty_string_null` |
| foreign keys to tables the dump doesn't create | 作成しない | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | NOT NULL を削除 | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | レポートに記載 | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | 値から読み取った型 | `no_schema` |
| expressions in INSERT values other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | 保持 |  |
| text that isn't valid UTF-8 | 不正なバイトを置換文字に | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | そのままコピー | `mojibake_suspected` |

## スクリプトを Oracle に読み込む

スクリプトはテーブルを作成して行をコピーしてから、キー、インデックス、外部キーを追加します。そのため読み込みが速く、最初のエラーで止まります。

```shell
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @sqlite.oracle.sql
```

外部キーは ENABLE NOVALIDATE で追加するため新しい行はすぐにチェックされ、その後に検証します。古い行が存在しない行を参照していれば、途中で失敗する代わりに、どの制約かをスクリプトが示し、その制約は未検証のまま残します。

大きなダンプでは、データベースと同じマシンで SQL*Plus を実行してください。スクリプトは 100 行ごとにコミットします。実行するユーザーには CREATE TABLE、CREATE SEQUENCE、CREATE TRIGGER、CREATE PROCEDURE の権限と、表領域の割り当てが必要です。

## SQLite を最適な方法でダンプする

コンバーターはダンプの内容を読み取ります。次のオプションを使うと、より多くのデータがダンプに残ります。

- データベースファイル自体をそのまま変換し、ブラウザでページ単位で読み込みます。変更が -wal ファイルに残らないよう、先に書き込み中のアプリを閉じてください。
- sqlite3 app.db .dump > app.sql で同じデータベースを SQL として書き出せます。これも .sql または .sql.gz として変換できます。
- DB Browser for SQLite では File、Export、Database to SQL file の順に選ぶとその SQL を書き出せます。Python の iterdump() も同様です。

## 変換されないもの

ビューとトリガーは SQLite 独自の言語で書かれています。黙って削除することはなく、レポートに名前で一覧するので、Oracle 向けに書き直せます。FTS5 や R*Tree などの仮想テーブルも一覧し、そのシャドウテーブルは含めません。

## SQLite から Oracle への変換に関する質問

### ダンプはアップロードされますか？

いいえ。コンバーターはブラウザ上で動作し、ダンプをディスクから少しずつ読み込むため、ダンプがコンピューターの外に出ることはありません。デスクトップアプリとコマンドラインも、お使いのコンピューター上で変換します。

### ダンプはどのくらいの大きさまで扱えますか？

コンバーターはダンプ全体をメモリに保持しません。ファイルを範囲ごとに 2 回読み、読みながらスクリプトを書き出します。数 GB のダンプも、ブラウザ、デスクトップアプリ、コマンドラインで変換できます。

### .db ファイル自体を変換できますか？

はい。.db、.sqlite、.sqlite3 ファイルをドロップしてください。ブラウザで読み込まれ、アップロードされることはありません。NUL 文字を含むテキストや double のすべての桁も保存されたとおりに届きます。.dump ではこれらが欠けることがあります。

### どの SQLite バージョンのダンプに対応していますか？

SQLite 3.0 以降の UTF-8 または UTF-16 のデータベースファイルと、sqlite3 シェルの .dump または Python の iterdump() で作成したダンプです。すべてのテスト用ファイルとダンプは sqlite3 3.31 から 3.54 で作成し、STRICT と WITHOUT ROWID のテーブルも含め、ソースとセル単位で比較しています。

### SQLite が型を強制しない場合、列の型はどう決まりますか？

宣言された型は目安で、値によって決まります。すべての値が収まれば、列は NUMBER、BINARY_DOUBLE、DATE、TIMESTAMP、BLOB、VARCHAR2、CLOB のいずれかになります。空文字列は Oracle の保存方法どおり NULL になり、レポートで件数を示します。

### INTEGER PRIMARY KEY と AUTOINCREMENT は保持されますか？

はい。INTEGER PRIMARY KEY は identity 列になり、各行は ID を保ちます。次の ID は最大の ID の後から、AUTOINCREMENT がある場合は sqlite_sequence の値の後から続きます。

### ビューとトリガーはどうなりますか？

データベースごとに独自の言語で書かれるため、変換はせず、レポートに名前で一覧します。

### スクリプトはどの Oracle バージョンで読み込めますか？

Oracle 19c 以降です。すべてのテスト用ダンプを 21c と 23ai で読み込み、問題があれば最初のエラーで止まります。

## SQLite から

- [SQLite から PostgreSQL へ](https://intosql.com/ja/sqlite-to-postgresql)
- [SQLite から MySQL へ](https://intosql.com/ja/sqlite-to-mysql)
- [SQLite から MariaDB へ](https://intosql.com/ja/sqlite-to-mariadb)
- [SQLite から SQLite へ](https://intosql.com/ja/sqlite-to-sqlite)
- [SQLite から SQL Server へ](https://intosql.com/ja/sqlite-to-sql-server)

## Oracle へ

- [MySQL から Oracle へ](https://intosql.com/ja/mysql-to-oracle)
- [MariaDB から Oracle へ](https://intosql.com/ja/mariadb-to-oracle)
- [PostgreSQL から Oracle へ](https://intosql.com/ja/postgresql-to-oracle)
- [SQL Server から Oracle へ](https://intosql.com/ja/sql-server-to-oracle)
- [Oracle から Oracle へ](https://intosql.com/ja/oracle-to-oracle)

## ガイドとすべての組み合わせ

- [Oracle から SQLite へ](https://intosql.com/ja/oracle-to-sqlite)
- [SQLite から Oracle への移行ガイド](https://intosql.com/docs/migrations/sqlite-to-oracle)
- [SQLite から Oracle へのデータ型](https://intosql.com/docs/types/sqlite-to-oracle)
- [すべてのデータベースの組み合わせ](https://intosql.com/ja/database-migration)
