Avvio sqlite3 versione 3.7.7, unix 11.4.2 usando questo comando:
sqlite3 auction.db
dove Auction.db non è già stato creato.
sqlite> auction.db < create.sql;
mi dà questo errore: near "auction": syntax error
Come posso eseguire lo script?
Avvio sqlite3 versione 3.7.7, unix 11.4.2 usando questo comando:
sqlite3 auction.db
dove Auction.db non è già stato creato.
sqlite> auction.db < create.sql;
mi dà questo errore: near "auction": syntax error
Come posso eseguire lo script?
Risposte:
Ci sono molti modi per farlo, un modo è:
sqlite3 auction.db
Seguito da:
sqlite> .read create.sql
In generale, il progetto SQLite ha una documentazione davvero fantastica! So che spesso cerchiamo Google prima dei documenti, ma nel caso di SQLite, i documenti sono davvero la scrittura tecnica al suo meglio. È pulito, chiaro e conciso.
Vuoi create.sqlinserire in sqlite3dalla shell, non dall'interno di SQLite stesso:
$ sqlite3 auction.db < create.sql
La versione SQLite di SQL non comprende i <file, la tua shell sì.
<come reindirizzamento dell'input. (Ad esempio, PowerShell.)
<uscirà immediatamente dal prompt di SQLite e restituirà il codice di errore alla shell. .read file.sqllascerà attivo il prompt e -init file.sqlrestituirà sempre 0, quindi <è il migliore per lo scripting. Inoltre è multipiattaforma a differenza di .readcui non supporta i percorsi di Windows.
Per eseguire query semplici e tornare al mio script di shell, penso che funzioni bene:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;', piuttosto che convogliare un'eco
sqlite3legge i comandi da eseguire non solo stdindall'ultimo argomento, ma anche dall'ultimo.
Per coloro che utilizzano PowerShell
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
Se stai usando Windows CMD puoi usare questo comando per creare un database usando sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
Se non hai un database con quel nome, sqlite3 ne creerà uno e se ne hai già uno lo eseguirà comunque ma con l'errore "TABLENAME già esistente", penso che tu possa usare questo comando anche per cambiare un già esistente database (ma non sono sicuro)
.readcomando direttamente dalsqlite3comando:sqlite3 autction.db '.read create.sql'.