ฉันเริ่ม sqlite3 เวอร์ชัน 3.7.7, unix 11.4.2 โดยใช้คำสั่งนี้:
sqlite3 auction.db
โดยที่ยังไม่ได้สร้างการประมูล.db
sqlite> auction.db < create.sql;
ทำให้ฉันมีข้อผิดพลาดนี้: near "auction": syntax error
ฉันจะเรียกใช้สคริปต์ได้อย่างไร
ฉันเริ่ม sqlite3 เวอร์ชัน 3.7.7, unix 11.4.2 โดยใช้คำสั่งนี้:
sqlite3 auction.db
โดยที่ยังไม่ได้สร้างการประมูล.db
sqlite> auction.db < create.sql;
ทำให้ฉันมีข้อผิดพลาดนี้: near "auction": syntax error
ฉันจะเรียกใช้สคริปต์ได้อย่างไร
คำตอบ:
มีหลายวิธีในการดำเนินการวิธีหนึ่งคือ:
sqlite3 auction.db
ติดตามโดย:
sqlite> .read create.sql
โดยทั่วไปโครงการ SQLite มีเอกสารที่ยอดเยี่ยมจริงๆ! ฉันรู้ว่าเรามักจะเข้าถึง Google ก่อนเอกสาร แต่ในกรณีของ SQLite เอกสารเป็นการเขียนเชิงเทคนิคที่ดีที่สุด มันสะอาดชัดเจนและรัดกุม
คุณต้องการป้อนcreate.sql
เข้าsqlite3
จากเชลล์ไม่ใช่จากภายใน SQLite เอง:
$ sqlite3 auction.db < create.sql
SQLite เวอร์ชันของ SQLite ไม่เข้าใจ<
สำหรับไฟล์เชลล์ของคุณทำ
<
ว่าเป็นการเปลี่ยนเส้นทางอินพุต (เช่น PowerShell.)
<
จะออกจากพรอมต์ SQLite ทันทีและส่งคืนรหัสข้อผิดพลาดไปยังเชลล์ .read file.sql
จะปล่อยให้พรอมต์ขึ้นและ-init file.sql
จะคืนค่า 0 เสมอดังนั้นจึง<
ดีที่สุดสำหรับการเขียนสคริปต์ นอกจากนี้ยังข้ามแพลตฟอร์ม.read
ซึ่งแตกต่างจากที่ไม่รองรับเส้นทาง Windows
ในการดำเนินการค้นหาอย่างง่ายและกลับไปที่เชลล์สคริปต์ของฉันฉันคิดว่าสิ่งนี้ใช้ได้ดี:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;'
มากกว่าการส่งสัญญาณสะท้อน
sqlite3
อ่านคำสั่งเพื่อดำเนินการไม่เพียง แต่จากstdin
แต่ยังมาจากอาร์กิวเมนต์สุดท้ายด้วย
สำหรับผู้ที่ใช้ PowerShell
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
หากคุณใช้ Windows CMD คุณสามารถใช้คำสั่งนี้เพื่อสร้างฐานข้อมูลโดยใช้ sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
หากคุณไม่มีฐานข้อมูลที่มีชื่อนั้น sqlite3 จะสร้างขึ้นมาใหม่และหากคุณมีอยู่แล้วก็จะเรียกใช้ฐานข้อมูลได้ แต่ด้วยข้อผิดพลาด "TABLENAME ที่มีอยู่แล้ว" ฉันคิดว่าคุณยังสามารถใช้คำสั่งนี้เพื่อเปลี่ยนที่มีอยู่แล้ว ฐานข้อมูล (แต่ไม่แน่ใจ)
.read
คำสั่งโดยตรงจากคำสั่ง:sqlite3
sqlite3 autction.db '.read create.sql'