---
title: "Migrare SQLite a Oracle nel browser"
description: "Migra un database SQLite a Oracle: converti il file .db o il suo dump in uno script con le stesse tabelle, chiavi e dati, e un report di ogni modifica."
canonical: https://intosql.com/it/sqlite-in-oracle
last_updated: 2026-10-15
---

# Migrare SQLite a Oracle nel browser

Trascina un file di database SQLite (.db, .sqlite, .sqlite3) o il SQL che scrive il .dump di sqlite3, e scarica uno script per Oracle con le stesse tabelle, chiavi, indici e dati. Ogni colonna riceve il tipo in cui stanno i suoi valori, e ogni valore che Oracle non può contenere così com'è è elencato nel report.

[Guida alla migrazione da SQLite a Oracle](https://intosql.com/docs/migrations/sqlite-to-oracle)

[Tipi di dati da SQLite a Oracle](https://intosql.com/docs/types/sqlite-to-oracle)

## Cosa cambia da SQLite a Oracle

Ogni riga è una regola che il convertitore applica, con la riga del report che scrive quando la regola cambia qualcosa nei tuoi dati.

| In SQLite | In Oracle | Riga del report |
| --- | --- | --- |
| declared types (any text: VARCHAR(255), DATETIME, BOOLEAN, JSON or none) | il tipo in cui stanno tutti i valori della colonna |  |
| BOOLEAN, BOOL | NUMBER(1) con un CHECK di 0 e 1 |  |
| TEXT, VARCHAR(n), CHAR(n), CLOB | VARCHAR2(n CHAR) quando ogni valore ci sta, altrimenti CLOB |  |
| TEXT and VARCHAR(n) longer than 4000 bytes | VARCHAR2(4000 CHAR) quando ogni valore sta in 4000 byte (750 caratteri in una chiave), altrimenti CLOB | `text_as_lob` |
| DECIMAL(p,s), NUMERIC | il tipo esatto quando ogni valore ci sta, altrimenti un double |  |
| BLOB, and columns holding bytes | BLOB |  |
| DATE, DATETIME, TIMESTAMP holding ISO 8601 text | DATE o TIMESTAMP(p), in base a ciò che contengono i valori |  |
| JSON holding JSON text | CLOB |  |
| Infinity in REAL columns | mantenuto come BINARY_DOUBLE_INFINITY |  |
| INTEGER PRIMARY KEY, AUTOINCREMENT | GENERATED BY DEFAULT ON NULL AS IDENTITY, che riparte dopo l'id più alto o dal valore di sqlite_sequence |  |
| COLLATE NOCASE | confronto esatto | `case_insensitive_collation` |
| generated columns | colonne virtuali | `stored_as_virtual` |
| generated columns with functions IntoSQL doesn't write, and the || operator | una colonna semplice | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (strftime, randomblob) | nessun valore predefinito | `default_not_translated` |
| CHECK constraints | tradotti |  |
| CHECK constraints with functions IntoSQL doesn't write | non creato | `check_skipped` |
| partial and expression indexes | non creato | `index_skipped` |
| foreign keys (unenforced unless PRAGMA foreign_keys=ON) | dopo i dati ENABLE NOVALIDATE, poi validata |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | rimosso | `foreign_key_action_unsupported` |
| empty strings and empty blobs | NULL | `empty_string_null` |
| foreign keys to tables the dump doesn't create | non creato | `foreign_key_skipped` |
| primary keys holding NULL, and NOT NULL columns with values that become NULL | NOT NULL rimosso | `not_null_relaxed` |
| views, triggers and virtual tables (FTS, R*Tree) | elencati nel report | `not_converted_objects` |
| dumps without CREATE TABLE (--data-only) | tipi ricavati dai valori | `no_schema` |
| expressions in INSERT values other than the text functions dumps write | NULL | `expression_value` |
| NUL characters in text | mantenuto |  |
| text that isn't valid UTF-8 | i byte errati come carattere di sostituzione | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copiato così com'è | `mojibake_suspected` |

## Carica lo script in Oracle

Lo script crea le tabelle, copia le righe, poi aggiunge chiavi, indici e chiavi esterne, così si carica in fretta e si ferma al primo errore.

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

Le chiavi esterne vengono aggiunte ENABLE NOVALIDATE, così le nuove righe sono controllate subito, e poi validate. Se una riga vecchia punta a una riga che non esiste, lo script dice quale vincolo e lo lascia non validato, invece di fallire a metà.

Per un dump grande, esegui SQL*Plus sulla stessa macchina del database. Lo script fa il commit ogni 100 righe. L'utente che lo esegue ha bisogno di CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER e CREATE PROCEDURE, e di una quota sul suo tablespace.

## Fai il dump di SQLite per il miglior risultato

Il convertitore legge ciò che il dump contiene. Con queste opzioni il dump conserva più dei tuoi dati:

- Il file del database si converte così com'è, letto pagina per pagina nel browser. Chiudi prima l'app che ci scrive, così nessuna modifica resta indietro nel suo file -wal.
- sqlite3 app.db .dump > app.sql scrive lo stesso database come SQL, che si converte anch'esso, come .sql o .sql.gz.
- DB Browser for SQLite scrive quel SQL con File, Export, Database to SQL file, e così fa iterdump() di Python.

## Cosa non viene convertito

Viste e trigger sono scritti nel linguaggio di SQLite. Sono elencati per nome nel report, mai rimossi in silenzio, così puoi riscriverli per Oracle. Anche le tabelle virtuali, come FTS5 e R*Tree, sono elencate, e le loro tabelle interne vengono escluse.

## Domande sulla conversione da SQLite a Oracle

### Il mio dump viene caricato?

No. Il convertitore funziona nel tuo browser e legge il dump dal tuo disco a pezzi, quindi non lascia mai il tuo computer. Anche l'app desktop e la riga di comando convertono sul tuo computer.

### Quanto può essere grande il dump?

Il convertitore non tiene mai l'intero dump in memoria: legge il file due volte, per intervalli, e scrive lo script man mano. I dump di più gigabyte si convertono nel browser, nell'app desktop e con la riga di comando.

### Posso convertire direttamente il file .db?

Sì. Trascina il file .db, .sqlite o .sqlite3: viene letto nel browser e mai caricato. Il testo con caratteri NUL e ogni cifra di un double arrivano come sono salvati, cosa che un .dump può troncare.

### Da quali versioni di SQLite può provenire il dump?

File di database da SQLite 3.0 in poi, in UTF-8 o UTF-16, e dump del .dump della shell sqlite3 o di iterdump() di Python. Ogni file e dump di test viene da sqlite3 dalla 3.31 alla 3.54, tabelle STRICT e WITHOUT ROWID incluse, ed è confrontato con la sorgente cella per cella.

### Come vengono decisi i tipi di colonna se SQLite non li applica?

Il tipo dichiarato è un'indicazione e decidono i valori: una colonna diventa NUMBER, BINARY_DOUBLE, DATE, TIMESTAMP, BLOB, VARCHAR2 o CLOB quando ogni valore ci sta. Le stringhe vuote diventano NULL, come le salva Oracle, e il report le conta.

### INTEGER PRIMARY KEY e AUTOINCREMENT vengono mantenuti?

Sì. Una INTEGER PRIMARY KEY diventa una colonna identity, ogni riga mantiene il suo id, e l'id successivo riparte dopo il più alto, o dopo il valore di sqlite_sequence con AUTOINCREMENT.

### E viste e trigger?

Sono elencati per nome nel report e non vengono convertiti, perché ogni database li scrive nel proprio linguaggio.

### Su quali versioni di Oracle si carica lo script?

Oracle 19c e successive. Ogni dump di test si carica su 21c e 23ai, fermandosi al primo errore se qualcosa va storto.

## Da SQLite

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

## Verso Oracle

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

## Guida e tutte le coppie

- [Da Oracle a SQLite](https://intosql.com/it/oracle-in-sqlite)
- [Guida alla migrazione da SQLite a Oracle](https://intosql.com/docs/migrations/sqlite-to-oracle)
- [Tipi di dati da SQLite a Oracle](https://intosql.com/docs/types/sqlite-to-oracle)
- [Tutte le coppie di database](https://intosql.com/it/migrazione-database)
