2013-02-09 112 views

回答

3

sqlite3.exe放在任何你想要的地方,只要你記得那個地方,你就可以從那裏開始sqlite3

應用腳本到數據庫(可能是新創建的一個),在命令提示符:

sqlite3.exe my-new-db.somesuffix < myscript.sql 

互動sqlite3會話中執行腳本:

sqlite3.exe my-new-db.somesuffix 
.... 
.read myscript.sql 
.... 

兩種變體是有效的,有時可用。 (注意:如果你的.sql是爲非sqlite數據庫生成的,我預計它需要一些更改才能在sqlite3中工作,而存儲過程和用戶​​定義的函數等東西肯定會丟失)。

+0

謝謝!所以從cmd我得到'錯誤:不完整的SQL:| -',並從sqlite3 shell它只是給出更多'....>'行時,輸入,沒有消息。任何數據庫文件都不會被創建。這就是我所期望的所有錯誤信息嗎? – bretddog 2013-02-09 16:04:42

+0

'不完整的SQL'可能是由sqlite和你的源數據庫之間的語法差異造成的,我們無法在不查看代碼的情況下解決它。在sqlite shell的'....>'提示符下,我認爲你**在'read'之前省略了前導點。它應該是'.read',而不是'read'。 (爲什麼在編輯答案中提供的編輯命令時,每個人都會問自己的問題?) – 2013-02-09 16:22:38

+0

我沒有編輯你的命令,但也許我沒有正確使用它們。我應該在運行這些命令之前創建數據庫嗎?我似乎甚至沒有創建一個空的數據庫,或者不應該在執行你在sqlite3會話中給出的第一行時發生這種情況?或者如何從cmd創建一個空的數據庫? – bretddog 2013-02-09 16:39:41

5

使用以下命令行:

sqlite3 -init dump.sql newsqlite.db "" 

它將由dump.sql執行語句創建新的SQLite數據庫文件newsqlite.db。 sqlite3需要空字符串""才能自動退出。

如果newsqlite.db文件已經存在某些數據,則導入可能會失敗,除非您對所有表和索引創建語句使用IF NOT EXISTS

+0

乾杯!儘管如此,cmd提示符給我的消息:' - 從script.sql加載資源'然後'錯誤:不完整的SQL:| -'(| beeing一個矩形),而同樣的命令sqlite3.exe外殼給了我一個新的行'...>'無論哪種方式沒有太多的錯誤信息,沒有行號,沒有任何東西。這是典型的嗎? – bretddog 2013-02-11 09:29:35

+0

爲了達到這個目的,你的'script.sql'必須是有效的 - 顯然不是。我建議逐行調試你的腳本。在Windows中,您應該安裝[SQLite專用個人](http://www.sqliteexpert。com)並使用此GUI仔細調試您的腳本 - 其中存在錯誤。 – mvp 2013-02-11 17:08:53

相關問題