Debería poder introducir ese archivo de volcado directamente en psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Si desea que la id
columna se "incremente automáticamente", cambie su tipo de "int" a "serial" en la línea de creación de la tabla. Posteriormente, PostgreSQL adjuntará una secuencia a esa columna para que a los INSERTs con ID NULL se les asigne automáticamente el siguiente valor disponible. PostgreSQL tampoco reconocerá los AUTOINCREMENT
comandos, por lo que estos deben eliminarse.
También querrá buscar datetime
columnas en el esquema SQLite y cambiarlas a timestamp
PostgreSQL (gracias a Clay por señalar esto).
Si tiene valores booleanos en su SQLite, puede convertir 1
y 0
y 1::boolean
y 0::boolean
(respectivamente) o puede cambiar la columna booleana a un número entero en la sección de esquema del volcado y luego arreglarlos a mano dentro de PostgreSQL después de la importación.
Si tiene BLOB en su SQLite, entonces querrá ajustar el esquema para usar bytea
. Probablemente también necesitará mezclar algunas decode
llamadas . Escribir una copiadora rápida y sucia en su idioma favorito podría ser más fácil que alterar el SQL si tiene muchos BLOB con los que lidiar.
Como de costumbre, si tiene claves foráneas, probablemente querrá investigar set constraints all deferred
para evitar problemas de orden de inserción, colocando el comando dentro del par BEGIN / COMMIT.
Gracias a Nicolas Riley por las notas booleanas, blob y de restricciones.
Si tiene `
en su código, tal como lo generan algunos clientes SQLite3, debe eliminarlos.
PostGRESQL tampoco reconoce unsigned
columnas, es posible que desee eliminar eso o agregar una restricción personalizada como esta:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Si bien SQLite establece los valores nulos de forma predeterminada en ''
, PostgreSQL requiere que se establezcan como NULL
.
La sintaxis en el archivo de volcado de SQLite parece ser mayormente compatible con PostgreSQL, por lo que puede parchear algunas cosas y alimentarlas psql
. Importar una gran cantidad de datos a través de SQL INSERT puede llevar un tiempo, pero funcionará.