SQLite komut dosyasını yürütün


102

Bu komutu kullanarak sqlite3 sürüm 3.7.7, unix 11.4.2'yi başlatıyorum:

sqlite3 auction.db

auction.db henüz oluşturulmamış.

sqlite> auction.db < create.sql;

bana şu hatayı veriyor: near "auction": syntax error

Komut dosyasını nasıl çalıştırabilirim?

Yanıtlar:


128

Bunu yapmanın birçok yolu vardır, tek yolu şudur:

sqlite3 auction.db

Bunu takiben:

sqlite> .read create.sql

Genel olarak, SQLite projesi gerçekten harika belgelere sahiptir! Google'a genellikle belgelerden önce ulaştığımızı biliyorum, ancak SQLite örneğinde, belgeler gerçekten en iyi haliyle teknik yazıdır. Temiz, anlaşılır ve özlüdür.


5
Scritps kullanım için, Çalıştırabileceğiniz .readdoğrudan komutu sqlite3komutu: sqlite3 autction.db '.read create.sql'.
Cris Luengo

148

SQLite'ın içinden değil, kabuğun create.sqliçine beslemek istiyorsunuz sqlite3:

$ sqlite3 auction.db < create.sql

SQLite'ın SQL sürümü <dosyaları anlamıyor , kabuğunuz anlıyor .


1
Ne yazık ki, tüm kabuklar <giriş yeniden yönlendirmesi olarak anlamıyor . (Örneğin, PowerShell.)
Alan

@Alan PowerShell'in bazı giriş yeniden yönlendirme mekanizması var, değil mi? Ve değilse, her zaman bitops yaklaşımı vardır.
mu çok kısa

@muistooshort bitops hakkındaki yorumuma bakın. Sqlite nokta komutları sql deyimi parametresinde çalışır, böylece istediğiniz dosyayı giriş yönlendirmesine başvurmadan okuyabilirsiniz.
Chris Becke

@ChrisBecke onlar farklı çözümlerdir. <SQLite isteminden hemen çıkacak ve hata kodunu kabuğa döndürecektir. .read file.sqlistemi açık bırakır ve -init file.sqlher zaman 0 döndürür, bu yüzden <komut dosyası oluşturmak için en iyisidir. Ayrıca .readWindows yollarını desteklemeyen çapraz platformdur .
TWiStErRob

24

Basit sorguları yürütmek ve kabuk betiğime dönmek için bunun iyi çalıştığını düşünüyorum:

$ sqlite3 example.db 'SELECT * FROM some_table;'

2
Bu etkili bir şekilde mu'nun cevabı çok kısa .
Albay Otuz İki

12
@ColonelThirtyTwo Evet, bu mu'ya çok yakın yanıtı çok kısa . Ek bir yanıt eklememin nedeni, komutu depolamak için bir SQL dosyası oluşturma ek adımını atmak yerine, bir satır içi komutu hızlı bir şekilde yürütmek için bir yöntem göstermekti.
remeika

5
@remeika Bence bir satır içi komutu yürütmenin daha aptalca bir yolu sqlite3 example.db 'SELECT * FROM some_table;'yankı
dağıtmaktansa

1
Ayrıca, (düzenlemeden sonra), sqlite3yalnızca çalıştırılacak komutları değil stdin, aynı zamanda son bağımsız değişkenden de çalıştırılacağını gösterir .
Rafael Almeida

4

PowerShell kullananlar için

PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db

2

Windows CMD kullanıyorsanız, sqlite3 kullanarak bir veritabanı oluşturmak için bu komutu kullanabilirsiniz.

C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"

Bu adda bir veritabanınız yoksa, sqlite3 bir tane oluşturacak ve zaten varsa, onu yine de çalıştıracak, ancak "TABLENAME zaten var" hatasıyla, bu komutu zaten mevcut olanı değiştirmek için de kullanabilirsiniz. veritabanı (ama emin değilim)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.