Comienzo sqlite3 versión 3.7.7, unix 11.4.2 usando este comando:
sqlite3 auction.db
donde Auction.db aún no se ha creado.
sqlite> auction.db < create.sql;
me da este error: near "auction": syntax error
¿Cómo puedo ejecutar el script?
Comienzo sqlite3 versión 3.7.7, unix 11.4.2 usando este comando:
sqlite3 auction.db
donde Auction.db aún no se ha creado.
sqlite> auction.db < create.sql;
me da este error: near "auction": syntax error
¿Cómo puedo ejecutar el script?
Respuestas:
Hay muchas formas de hacer esto, una de ellas es:
sqlite3 auction.db
Seguido por:
sqlite> .read create.sql
En general, ¡el proyecto SQLite tiene una documentación realmente fantástica! Sé que a menudo recurrimos a Google antes que los documentos, pero en el caso de SQLite, los documentos realmente son redacción técnica en su mejor momento. Es limpio, claro y conciso.
Desea alimentar el create.sqlen sqlite3de la cáscara, no desde dentro de la propia SQLite:
$ sqlite3 auction.db < create.sql
La versión de SQL de SQLite no comprende los <archivos, su shell lo hace.
<como redirección de entrada. (Por ejemplo, PowerShell.)
<saldrá del indicador SQLite inmediatamente y devolverá el código de error al shell. .read file.sqldejará el indicador y -init file.sqlsiempre devolverá 0, por lo que <es lo mejor para la creación de scripts. También es multiplataforma, a diferencia de .readlo que no admite rutas de Windows.
Para ejecutar consultas simples y volver a mi script de shell, creo que esto funciona bien:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;', en lugar de
sqlite3lee comandos para ejecutar no solo desde stdin, sino también desde el último argumento.
Para aquellos que usan PowerShell
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
Si está usando la CMD de Windows, puede usar este comando para crear una base de datos usando sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
Si no tiene una base de datos con ese nombre sqlite3 creará una, y si ya tiene una, la ejecutará de todos modos, pero con el error "TABLENAME ya existe", creo que también puede usar este comando para cambiar una ya existente base de datos (pero no estoy seguro)
.readcomando directamente desde elsqlite3comando:sqlite3 autction.db '.read create.sql'.