---
title: "Migrar Oracle a SQLite en tu navegador"
description: "Migra una base de datos Oracle a SQLite: convierte una exportación de SQL Developer o SQLcl en un script con las mismas tablas, claves y datos."
canonical: https://intosql.com/es/oracle-a-sqlite
last_updated: 2026-10-15
---

# Migrar Oracle a SQLite en tu navegador

Suelta el archivo .sql que escribe Database Export de SQL Developer o SQLcl, con sus tablas y sentencias Insert, y descarga un script de SQLite con las mismas tablas, claves, índices y datos. Cada valor que SQLite no puede guardar tal cual, y cada objeto que no admite, aparece en el informe.

[Guía de migración de Oracle a SQLite](https://intosql.com/docs/migrations/oracle-to-sqlite)

[Tipos de datos de Oracle a SQLite](https://intosql.com/docs/types/oracle-to-sqlite)

## Qué cambia de Oracle a SQLite

Cada fila es una regla que aplica el convertidor, con la línea que escribe en el informe cuando la regla cambia algo en tus datos.

| En Oracle | En SQLite | Línea del informe |
| --- | --- | --- |
| BOOLEAN (23ai) | INTEGER 0 o 1 con un CHECK |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | TEXT |  |
| NUMBER, NUMBER(p,s), FLOAT(b) | INTEGER, o NUMERIC exacto como texto a partir de 15 dígitos | `decimal_as_text` |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | TEXT con el texto de Oracle, como +01-06 | `type_replaced` |
| DATE, TIMESTAMP(p) | DATETIME como texto ISO 8601, con cada dígito |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP como texto ISO 8601 en UTC | `moments_as_utc` |
| JSON (21c), and CLOB holding JSON | TEXT |  |
| BLOB, RAW(n), LONG RAW | BLOB |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | TEXT | `type_replaced` |
| collations that ignore case (BINARY_CI) | comparación exacta | `case_insensitive_collation` |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | INTEGER PRIMARY KEY AUTOINCREMENT, siguiendo después del id más alto |  |
| identity columns the target can't count | INTEGER sin contador | `counter_dropped` |
| CREATE SEQUENCE | no se crea | `sequence_not_converted` |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | GENERATED ALWAYS AS, STORED cuando son PERSISTED, VIRTUAL en otro caso |  |
| virtual columns with functions IntoSQL doesn't write, and the || operator | una columna simple | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | sin valor predeterminado | `default_not_translated` |
| CHECK constraints | traducidos |  |
| CHECK constraints with functions IntoSQL doesn't write | no se crea | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | no se crea | `check_not_enforced` |
| function-based, bitmap and domain indexes | no se crea | `index_skipped` |
| foreign keys | en CREATE TABLE, cargadas sin comprobar, luego listadas por PRAGMA foreign_key_check |  |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | no se crea | `foreign_key_skipped` |
| partitioned tables | una tabla con las filas de todas las particiones | `partitions_dropped` |
| several schemas in one export | un archivo, con el nombre del esquema delante de cada tabla | `schemas_merged` |
| NOT NULL columns with values that become NULL | sin NOT NULL | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | listados en el informe | `not_converted_objects` |
| exports without CREATE TABLE (data only) | tipos leídos de los valores | `no_schema` |
| expressions in INSERT values other than the ones exports write | NULL | `expression_value` |
| types IntoSQL doesn't know, and object types | TEXT | `unknown_type` |
| dates before year 1 and time zones given as region names | NULL | `date_out_of_range` |
| NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE | Infinity como 9e999; NaN como NULL |  |
| NUL characters in text | se conserva |  |
| text that isn't valid in its encoding | los bytes incorrectos como carácter de reemplazo | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | se copia tal cual | `mojibake_suspected` |

## Carga el script en SQLite

El script crea las tablas, copia las filas y luego agrega claves, índices y claves foráneas, así que carga rápido y se detiene en el primer error.

```shell
sqlite3 -bail mydb.sqlite < oracle.sqlite.sql
```

Las claves foráneas se declaran en cada tabla y las filas se cargan con la comprobación de claves foráneas desactivada. Luego el script lista cada fila que apunta a una fila que no existe, en lugar de fallar a medias.

Para un volcado grande, carga en un archivo nuevo en un disco local. El script carga todo en una sola transacción con la sincronización desactivada, así que va a la velocidad del disco, y una carga que se detiene a medias no deja tablas incompletas.

La línea de comandos carga el archivo directo en una base de datos SQLite, sin escribir un script. Es gratis.

## Haz el volcado de Oracle para el mejor resultado

El convertidor lee lo que contiene el volcado. Estas opciones conservan más de tus datos en él:

- En SQL Developer, elige Tools, Database Export, con DDL y el formato de datos Insert. SQLcl escribe lo mismo con SET SQLFORMAT INSERT.
- Ejecuta ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS' antes de exportar: el formato predeterminado escribe las fechas sin su hora ni su siglo.
- Un archivo .dmp de exp o expdp es binario: impórtalo en una base de datos Oracle, por ejemplo Oracle Database Free en Docker, y expórtalo con SQL Developer.

## Qué no se convierte

Las vistas, paquetes, procedimientos, funciones, disparadores, tipos y sinónimos se escriben en PL/SQL. Aparecen en el informe por nombre, nunca se descartan en silencio, para que puedas reescribirlos para SQLite.

## Preguntas sobre Oracle a SQLite

### ¿Se sube mi volcado?

No. El convertidor se ejecuta en tu navegador y lee el volcado de tu disco por partes, así que nunca sale de tu computadora. La app de escritorio y la línea de comandos también convierten en tu computadora.

### ¿Qué tan grande puede ser el volcado?

El convertidor nunca tiene todo el volcado en memoria: lee el archivo dos veces, por rangos, y escribe el script sobre la marcha. Los volcados de varios gigabytes se convierten en el navegador, en la app de escritorio y con la línea de comandos.

### ¿Puedo convertir un archivo .dmp de exp o expdp?

No directamente: Data Pump y el Export original escriben un formato binario que solo Oracle lee. Impórtalo en cualquier base de datos Oracle, Oracle Database Free funciona en Docker, y expórtalo con Database Export de SQL Developer o con SQLcl. El convertidor te lo indica cuando recibe un archivo .dmp.

### ¿De qué versiones de Oracle puede venir la exportación?

Exportaciones de SQL Developer y SQLcl, con las definiciones de tabla de DBMS_METADATA, desde Oracle 11g en adelante. Cada exportación de prueba viene de Oracle 21c y 23ai, en sesiones estadounidenses, alemanas e ISO, y se compara con su origen celda por celda.

### ¿Qué pasa con NUMBER, DATE y los demás tipos de Oracle?

NUMBER se vuelve INTEGER para números enteros y conserva cada dígito en los demás casos; DATE se vuelve texto DATETIME con su hora; CLOB TEXT, BLOB y RAW BLOB. Infinity se conserva; NaN se vuelve NULL.

### ¿Se conservan las columnas de identidad y las secuencias?

Una columna de identidad que es toda la clave primaria de la tabla se vuelve INTEGER PRIMARY KEY AUTOINCREMENT y sigue después del id más alto. SQLite no tiene secuencias, así que aparecen en el informe.

### ¿Qué pasa con los paquetes, procedimientos y disparadores de PL/SQL?

Aparecen en el informe por nombre y no se convierten, porque cada base de datos los escribe en su propio lenguaje.

### ¿En qué versiones de SQLite carga el script?

SQLite 3.31 y posteriores. Cada exportación de prueba carga en 3.31 y 3.54, y se detiene en el primer error si algo sale mal.

## Desde Oracle

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

## Hacia SQLite

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

## Guía y todos los pares

- [SQLite a Oracle](https://intosql.com/es/sqlite-a-oracle)
- [Guía de migración de Oracle a SQLite](https://intosql.com/docs/migrations/oracle-to-sqlite)
- [Tipos de datos de Oracle a SQLite](https://intosql.com/docs/types/oracle-to-sqlite)
- [Todos los pares de bases de datos](https://intosql.com/es/migracion-de-bases-de-datos)
