---
title: "Миграция SQLite в Oracle в браузере"
description: "Миграция базы SQLite в Oracle: файл .db или его дамп превращается в скрипт с теми же таблицами, ключами и данными и отчетом о каждом изменении."
canonical: https://intosql.com/ru/sqlite-v-oracle
last_updated: 2026-10-15
---

# Миграция SQLite в Oracle в браузере

Перетащите файл базы данных SQLite (.db, .sqlite, .sqlite3) или SQL, который пишет .dump в sqlite3, и скачайте скрипт 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 | NUMBER(1) с CHECK на 0 и 1 |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | VARCHAR2(n CHAR), если каждое значение помещается, иначе CLOB |  |
| TEXT and VARCHAR(n) longer than 4000 bytes | VARCHAR2(4000 CHAR), если каждое значение укладывается в 4000 байт (750 символов в ключе), иначе 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 пишет этот SQL через File, Export, Database to SQL file, как и iterdump() в Python.

## Что не конвертируется

Представления и триггеры написаны на собственном языке SQLite. Они перечислены в отчете по имени и никогда не удаляются молча, чтобы вы могли переписать их для Oracle. Виртуальные таблицы, такие как FTS5 и R*Tree, тоже перечислены, а их служебные таблицы пропускаются.

## Вопросы о SQLite в Oracle

### Мой дамп загружается на сервер?

Нет. Конвертер работает в вашем браузере и читает дамп с диска по частям, поэтому он никогда не покидает ваш компьютер. Приложение для компьютера и командная строка тоже конвертируют на вашем компьютере.

### Насколько большим может быть дамп?

Конвертер никогда не держит весь дамп в памяти: он читает файл дважды, по диапазонам, и пишет скрипт по ходу чтения. Дампы в несколько гигабайт конвертируются в браузере, в приложении для компьютера и в командной строке.

### Можно ли конвертировать сам файл .db?

Да. Перетащите файл .db, .sqlite или .sqlite3: он читается в браузере и никуда не загружается. Текст с символами NUL и все цифры значения double приходят такими, как хранятся, а .dump может их обрезать.

### Из каких версий SQLite может быть дамп?

Файлы баз данных SQLite начиная с 3.0, в UTF-8 или UTF-16, и дампы из .dump оболочки sqlite3 или из iterdump() в Python. Каждый тестовый файл и дамп создан в sqlite3 с 3.31 по 3.54, включая таблицы STRICT и WITHOUT ROWID, и сверен с источником ячейка за ячейкой.

### Как определяются типы столбцов, если SQLite их не соблюдает?

Объявленный тип - лишь подсказка, а решают значения: столбец становится NUMBER, BINARY_DOUBLE, DATE, TIMESTAMP, BLOB, VARCHAR2 или CLOB, если в него помещается каждое значение. Пустые строки становятся NULL, как их хранит Oracle, а отчет их подсчитывает.

### Сохраняются ли INTEGER PRIMARY KEY и AUTOINCREMENT?

Да. INTEGER PRIMARY KEY становится столбцом identity, каждая строка сохраняет свой id, а следующий id идет после наибольшего или, при AUTOINCREMENT, после значения sqlite_sequence.

### А представления и триггеры?

Они перечислены в отчете по имени и не конвертируются, потому что каждая база данных пишет их на своем языке.

### На каких версиях Oracle загружается скрипт?

Oracle 19c и новее. Каждый тестовый дамп загружается на 21c и 23ai и останавливается на первой ошибке, если что-то пойдет не так.

## Из SQLite

- [SQLite в PostgreSQL](https://intosql.com/ru/sqlite-v-postgresql)
- [SQLite в MySQL](https://intosql.com/ru/sqlite-v-mysql)
- [SQLite в MariaDB](https://intosql.com/ru/sqlite-v-mariadb)
- [SQLite в SQLite](https://intosql.com/ru/sqlite-v-sqlite)
- [SQLite в SQL Server](https://intosql.com/ru/sqlite-v-sql-server)

## В Oracle

- [MySQL в Oracle](https://intosql.com/ru/mysql-v-oracle)
- [MariaDB в Oracle](https://intosql.com/ru/mariadb-v-oracle)
- [PostgreSQL в Oracle](https://intosql.com/ru/postgresql-v-oracle)
- [SQL Server в Oracle](https://intosql.com/ru/sql-server-v-oracle)
- [Oracle в Oracle](https://intosql.com/ru/oracle-v-oracle)

## Руководство и все пары

- [Oracle в SQLite](https://intosql.com/ru/oracle-v-sqlite)
- [Руководство по миграции SQLite в Oracle](https://intosql.com/docs/migrations/sqlite-to-oracle)
- [Типы данных из SQLite в Oracle](https://intosql.com/docs/types/sqlite-to-oracle)
- [Все пары баз данных](https://intosql.com/ru/migratsiya-bazy-dannykh)
