Đóng cửa sổ cmd python

The SQLite project provides a simple command-line program named sqlite3 [or sqlite3. exe on Windows] that allows the user to manually enter and execute SQL statements against an SQLite database or against a ZIP archive. This document provides a brief introduction on how to use the sqlite3 program

Start the sqlite3 program by typing "sqlite3" at the command prompt, optionally followed by the name of the file that holds the SQLite database [or ZIP archive]. If the named file does not exist, a new database file with the given name will be created automatically. If no database file is specified on the command-line, a temporary database is created and automatically deleted when the "sqlite3" program exits

On startup, the sqlite3 program will show a brief banner message then prompt you to enter SQL. Type in SQL statements [terminated by a semicolon], press "Enter" and the SQL will be executed

For example, to create a new SQLite database named "ex1" with a single table named "tbl1", you might do this

$ sqlite3 ex1
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite> create table tbl1[one text, two int];
sqlite> insert into tbl1 values['hello!',10];
sqlite> insert into tbl1 values['goodbye', 20];
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

Terminate the sqlite3 program by typing your system End-Of-File character [usually a Control-D]. Use the interrupt character [usually a Control-C] to stop a long-running SQL statement

Make sure you type a semicolon at the end of each SQL command. Chương trình sqlite3 tìm kiếm dấu chấm phẩy để biết khi nào lệnh SQL của bạn hoàn thành. If you omit the semicolon, sqlite3 will give you a continuation prompt and wait for you to enter more text to complete the SQL command. Tính năng này cho phép bạn nhập các lệnh SQL trải rộng trên nhiều dòng. Ví dụ

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>

Người dùng Windows có thể nhấp đúp vào sqlite3. exe để khiến shell dòng lệnh bật lên một cửa sổ đầu cuối chạy SQLite. Tuy nhiên, vì nhấp đúp sẽ khởi động sqlite3. exe không có đối số dòng lệnh, sẽ không có tệp cơ sở dữ liệu nào được chỉ định, vì vậy SQLite sẽ sử dụng cơ sở dữ liệu tạm thời bị xóa khi phiên thoát. Để sử dụng tệp đĩa liên tục làm cơ sở dữ liệu, hãy nhập ". open" ngay sau khi cửa sổ đầu cuối khởi động

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>

Ví dụ trên khiến tệp cơ sở dữ liệu có tên "ex1. db" được mở và sử dụng. "ex1. db" được tạo nếu nó không tồn tại trước đó. Bạn có thể muốn sử dụng tên đường dẫn đầy đủ để đảm bảo rằng tệp nằm trong thư mục mà bạn cho rằng nó nằm trong đó. Sử dụng dấu gạch chéo lên làm ký tự phân cách thư mục. Nói cách khác, sử dụng "c. /công việc/ex1. db", không phải "c. \work\ex1. db"

Ngoài ra, bạn có thể tạo cơ sở dữ liệu mới bằng cách sử dụng bộ lưu trữ tạm thời mặc định, sau đó lưu cơ sở dữ liệu đó vào một tệp đĩa bằng cách sử dụng ". lưu" lệnh

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>

Hãy cẩn thận khi sử dụng ". lưu" vì nó sẽ ghi đè lên bất kỳ tệp cơ sở dữ liệu nào có cùng tên mà không cần nhắc xác nhận. Như với ". open", bạn có thể muốn sử dụng tên đường dẫn đầy đủ với dấu phân cách thư mục dấu gạch chéo về phía trước để tránh sự mơ hồ

Hầu hết thời gian, sqlite3 chỉ đọc các dòng đầu vào và chuyển chúng vào thư viện SQLite để thực thi. Nhưng nhập các dòng bắt đầu bằng dấu chấm [". "] bị chặn và giải thích bởi chính chương trình sqlite3. Các "lệnh dấu chấm" này thường được sử dụng để thay đổi định dạng đầu ra của các truy vấn hoặc để thực thi các câu lệnh truy vấn được đóng gói sẵn nhất định. Ban đầu chỉ có một vài lệnh dấu chấm, nhưng qua nhiều năm, nhiều tính năng mới đã được tích lũy để ngày nay có hơn 60 lệnh.

Để có danh sách các lệnh dấu chấm có sẵn, bạn có thể nhập ". giúp đỡ" không có đối số. Hoặc nhập ". help TOPIC" để biết thông tin chi tiết về TOPIC. Danh sách các lệnh chấm có sẵn sau

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>

4. 1. cấu trúc dòng

Đầu vào của CLI được phân tích cú pháp thành một chuỗi bao gồm

  • câu lệnh SQL;
  • dot-lệnh;
  • bình luận CLI

Các câu lệnh SQL có dạng tự do và có thể trải rộng trên nhiều dòng, với khoảng trắng hoặc nhận xét SQL được nhúng ở mọi nơi. Chúng được kết thúc bằng dấu ';' . Khi không ở cuối dòng đầu vào, dấu ';' . Khoảng trắng ở cuối bị bỏ qua cho mục đích chấm dứt

Lệnh chấm có cấu trúc hạn chế hơn

  • Nó phải bắt đầu với ". " ở lề trái không có khoảng trắng trước
  • Nó phải được chứa hoàn toàn trên một dòng đầu vào
  • Nó không thể xảy ra ở giữa câu lệnh SQL thông thường. Nói cách khác, nó không thể xảy ra tại dấu nhắc tiếp tục
  • Không có cú pháp bình luận cho dấu chấm lệnh

CLI cũng chấp nhận nhận xét toàn bộ dòng bắt đầu bằng ký tự '#' và kéo dài đến cuối dòng. Không thể có khoảng trắng trước '#'

4. 2. Đối số lệnh chấm

Các đối số được chuyển đến các lệnh dấu chấm được phân tích cú pháp từ đuôi lệnh, theo các quy tắc này

  1. Dòng mới ở cuối và bất kỳ khoảng trắng ở cuối nào khác đều bị loại bỏ;
  2. Khoảng trắng ngay sau tên lệnh dấu chấm hoặc bất kỳ giới hạn đầu vào đối số nào đều bị loại bỏ;
  3. Đầu vào đối số bắt đầu bằng bất kỳ ký tự không phải khoảng trắng nào;
  4. Do đó, một đầu vào đối số kết thúc bằng một ký tự phụ thuộc vào ký tự đầu của nó
    • đối với dấu nháy đơn hàng đầu ['], dấu nháy đơn đóng vai trò là dấu phân cách kết thúc;
    • đối với dấu ngoặc kép hàng đầu ["], dấu ngoặc kép không thoát đóng vai trò là dấu phân cách kết thúc;
    • đối với bất kỳ ký tự đầu nào khác, dấu phân cách cuối là bất kỳ khoảng trắng nào;
    • phần cuối của lệnh đóng vai trò là dấu phân cách kết thúc cho bất kỳ đối số nào;
  5. Trong đầu vào đối số được trích dẫn kép, trích dẫn kép thoát dấu gạch chéo ngược là một phần của đối số chứ không phải là trích dẫn kết thúc của nó;
  6. Trong một đối số được trích dẫn kép, quá trình dịch chuỗi thoát dấu gạch chéo ngược, ký tự chuỗi C truyền thống được thực hiện;
  7. Dấu phân cách đầu vào của đối số [dấu ngoặc kép hoặc khoảng trắng] bị loại bỏ để tạo ra đối số đã truyền

4. 3. Thực thi lệnh chấm

Các lệnh dấu chấm được giải thích bởi sqlite3. exe chương trình dòng lệnh, không phải bởi chính SQLite. Vì vậy, không có lệnh dấu chấm nào hoạt động như một đối số cho các giao diện SQLite, chẳng hạn như sqlite3_prepare[] hoặc sqlite3_exec[]

Chương trình sqlite3 có thể hiển thị kết quả của truy vấn ở 14 định dạng đầu ra khác nhau

  • ascii
  • hộp
  • csv
  • cột
  • html
  • chèn
  • json
  • đường kẻ
  • danh sách
  • hạ giá
  • trích dẫn
  • bàn
  • tab
  • tcl

Bạn có thể dùng ". mode" dấu chấm để chuyển đổi giữa các định dạng đầu ra này. Chế độ đầu ra mặc định là "danh sách". Trong chế độ danh sách, mỗi hàng của kết quả truy vấn được ghi trên một dòng đầu ra và mỗi cột trong hàng đó được phân tách bằng một chuỗi dấu phân cách cụ thể. Dấu phân cách mặc định là một ký hiệu ống [". "]. Chế độ danh sách đặc biệt hữu ích khi bạn định gửi đầu ra của truy vấn tới một chương trình khác [chẳng hạn như AWK] để xử lý bổ sung

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>

Loại ". mode" không có đối số để hiển thị chế độ hiện tại

sqlite> .mode
current output mode: list
sqlite>

Sử dụng ". dấu phân cách" để thay đổi dấu phân cách. For example, to change the separator to a comma and a space, you could do this

sqlite> .separator ", "
sqlite> select * from tbl1;
hello!, 10
goodbye, 20
sqlite>

Tiếp theo ". mode" có thể đặt lại ". dấu phân cách" trở lại một số giá trị mặc định [tùy thuộc vào đối số của nó]. Vì vậy, bạn có thể sẽ cần phải lặp lại ". dấu phân cách" bất cứ khi nào bạn thay đổi chế độ nếu bạn muốn tiếp tục sử dụng dấu phân cách không chuẩn

Trong chế độ "trích dẫn", đầu ra được định dạng dưới dạng ký tự SQL. Các chuỗi được đặt trong dấu ngoặc đơn và dấu ngoặc đơn bên trong được thoát bằng cách nhân đôi. Các đốm màu được hiển thị trong ký hiệu chữ blob hệ thập lục phân [Ví dụ. x'abcd']. Các số được hiển thị dưới dạng văn bản ASCII và các giá trị NULL được hiển thị là "NULL". Tất cả các cột được phân tách với nhau bằng dấu phẩy [hoặc bất kỳ ký tự thay thế nào được chọn bằng cách sử dụng ". dấu phân cách"]

________số 8

Ở chế độ "dòng", mỗi cột trong một hàng của cơ sở dữ liệu được hiển thị trên một dòng của chính nó. Mỗi dòng bao gồm tên cột, dấu bằng và dữ liệu cột. Các bản ghi liên tiếp cách nhau bởi một dòng trống. Dưới đây là một ví dụ về đầu ra chế độ dòng

sqlite> .mode line
sqlite> select * from tbl1;
one = hello!
two = 10

one = goodbye
two = 20
sqlite>

Ở chế độ cột, mỗi bản ghi được hiển thị trên một dòng riêng biệt với dữ liệu được căn chỉnh trong các cột. Ví dụ

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
0

Ở chế độ "cột" [và cả ở chế độ "hộp", "bảng" và "đánh dấu"] chiều rộng của các cột sẽ tự động điều chỉnh. Nhưng bạn có thể ghi đè lên điều này, cung cấp chiều rộng cụ thể cho mỗi cột bằng cách sử dụng lệnh ". chiều rộng" lệnh. Những lập luận để ". width" là các số nguyên là số lượng ký tự dành cho mỗi cột. Số âm có nghĩa là căn phải. Như vậy

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
1

Chiều rộng bằng 0 có nghĩa là chiều rộng cột được chọn tự động. Độ rộng cột không xác định trở thành 0. Do đó, lệnh ". width" không có đối số sẽ đặt lại tất cả độ rộng cột về 0 và do đó khiến tất cả độ rộng cột được xác định tự động

Chế độ "cột" là định dạng đầu ra dạng bảng. Các định dạng đầu ra dạng bảng khác là "box", "markdown" và "table"

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
2

Các chế độ cột chấp nhận một số tùy chọn bổ sung để kiểm soát định dạng. Tùy chọn "--wrap N" [trong đó N là số nguyên] làm cho các cột ngắt dòng văn bản dài hơn N ký tự. Gói bị vô hiệu hóa nếu N bằng không

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
3

Việc ngắt dòng xảy ra sau chính xác N ký tự, ký tự này có thể ở giữa một từ. Để bao quanh ranh giới từ, hãy thêm tùy chọn "--wordwrap on" [hoặc chỉ viết tắt là "-ww"]

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
4

Tùy chọn "--quote" làm cho kết quả trong mỗi cột được trích dẫn giống như một ký tự SQL, như trong chế độ "trích dẫn". Xem trợ giúp trực tuyến để biết các tùy chọn bổ sung

Lệnh ". hộp chế độ --wrap 60 --quote" rất hữu ích cho các truy vấn cơ sở dữ liệu có mục đích chung đến mức nó được đặt bí danh riêng. Thay vì gõ toàn bộ lệnh gồm 27 ký tự đó, bạn chỉ cần nói ". chế độ qbox"

Một chế độ đầu ra hữu ích khác là "chèn". Trong chế độ chèn, đầu ra được định dạng giống như các câu lệnh INSERT của SQL. Sử dụng chế độ chèn để tạo văn bản mà sau này có thể được sử dụng để nhập dữ liệu vào cơ sở dữ liệu khác

Khi chỉ định chế độ chèn, bạn phải đưa ra một đối số phụ là tên của bảng sẽ được chèn vào. Ví dụ

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
5

Các chế độ đầu ra khác bao gồm "csv", "json" và "tcl". Hãy tự mình thử để xem những gì họ làm

Chương trình sqlite3 cung cấp một số lệnh tiện ích hữu ích để xem lược đồ của cơ sở dữ liệu. Không có gì mà các lệnh này làm mà không thể thực hiện được bằng một số phương tiện khác. Các lệnh này được cung cấp hoàn toàn dưới dạng phím tắt

Ví dụ, để xem danh sách các bảng trong cơ sở dữ liệu, bạn có thể nhập ". những cái bàn"

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
6

Các ". bảng" tương tự như cài đặt chế độ danh sách, sau đó thực hiện truy vấn sau

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
7

Nhưng ". bảng" lệnh làm nhiều hơn. Nó truy vấn bảng sqlite_schema cho tất cả các cơ sở dữ liệu đính kèm, không chỉ cơ sở dữ liệu chính. Và nó sắp xếp đầu ra của nó thành các cột gọn gàng

Các ". indexes" hoạt động theo cách tương tự để liệt kê tất cả các chỉ mục. Nếu ". indexes" được đưa ra một đối số là tên của một bảng, sau đó nó chỉ hiển thị các chỉ mục trên bảng đó

Các ". lược đồ" hiển thị lược đồ hoàn chỉnh cho cơ sở dữ liệu hoặc cho một bảng nếu một đối số tên bảng tùy chọn được cung cấp

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
8

Các ". lược đồ" gần giống như cài đặt chế độ danh sách, sau đó nhập truy vấn sau

sqlite> CREATE TABLE tbl2 [
   ...>   f1 varchar[30] primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> ];
sqlite>
9

Như với ". bảng", ". lược đồ" hiển thị lược đồ cho tất cả các cơ sở dữ liệu được đính kèm. Nếu bạn chỉ muốn xem lược đồ cho một cơ sở dữ liệu [có thể là "chính"] thì bạn có thể thêm một đối số vào ". schema" để hạn chế đầu ra của nó

Các ". lược đồ" có thể được tăng cường bằng tùy chọn "--indent", trong trường hợp đó, nó cố gắng định dạng lại các câu lệnh CREATE khác nhau của lược đồ để con người dễ đọc hơn

Các ". cơ sở dữ liệu" hiển thị danh sách tất cả các cơ sở dữ liệu đang mở trong kết nối hiện tại. Luôn có ít nhất 2. Cái đầu tiên là "chính", cơ sở dữ liệu ban đầu đã mở. Thứ hai là "temp", cơ sở dữ liệu được sử dụng cho các bảng tạm thời. Có thể có các cơ sở dữ liệu bổ sung được liệt kê cho các cơ sở dữ liệu được đính kèm bằng cách sử dụng câu lệnh ATTACH. Cột đầu ra đầu tiên là tên cơ sở dữ liệu được đính kèm và cột kết quả thứ hai là tên tệp của tệp bên ngoài. Có thể có một cột kết quả thứ ba sẽ là "'r/o'" hoặc "'r/w'" tùy thuộc vào việc tệp cơ sở dữ liệu là chỉ đọc hay đọc-ghi. Và có thể có cột kết quả thứ tư hiển thị kết quả của sqlite3_txn_state[] cho tệp cơ sở dữ liệu đó

Các ". fullschema" lệnh dấu chấm hoạt động giống như lệnh ". lược đồ" ở chỗ nó hiển thị toàn bộ lược đồ cơ sở dữ liệu. Nhưng mà ". fullschema" cũng bao gồm các kết xuất của bảng thống kê "sqlite_stat1", "sqlite_stat3" và "sqlite_stat4" nếu chúng tồn tại. Các ". fullschema" thường cung cấp tất cả thông tin cần thiết để tạo lại chính xác một kế hoạch truy vấn cho một truy vấn cụ thể. Khi báo cáo các sự cố đáng ngờ với công cụ lập kế hoạch truy vấn SQLite cho nhóm phát triển SQLite, các nhà phát triển được yêu cầu cung cấp ". fullschema" như một phần của báo cáo sự cố. Lưu ý rằng bảng sqlite_stat3 và sqlite_stat4 chứa các mẫu mục nhập chỉ mục và do đó có thể chứa dữ liệu nhạy cảm, vì vậy đừng gửi ". fullschema" của cơ sở dữ liệu độc quyền trên kênh công cộng

Các ". open" sẽ mở một kết nối cơ sở dữ liệu mới, sau lần đầu tiên đóng lệnh cơ sở dữ liệu đã mở trước đó. Ở dạng đơn giản nhất, ". open" chỉ đơn thuần gọi sqlite3_open[] trên tệp có tên là đối số của nó. Sử dụng tên ". trí nhớ. " để mở một cơ sở dữ liệu mới trong bộ nhớ sẽ biến mất khi CLI thoát hoặc khi ". open" được chạy lại

Nếu tùy chọn --new được bao gồm trong ". open", thì cơ sở dữ liệu được đặt lại trước khi được mở. Mọi dữ liệu trước đó đều bị hủy. Đây là thao tác ghi đè phá hoại dữ liệu trước đó và không yêu cầu xác nhận, vì vậy hãy sử dụng tùy chọn này một cách cẩn thận

Tùy chọn --readonly mở cơ sở dữ liệu ở chế độ chỉ đọc. Viết sẽ bị cấm

Tùy chọn --deserialize khiến toàn bộ nội dung của tệp trên đĩa được đọc vào bộ nhớ và sau đó được mở dưới dạng cơ sở dữ liệu trong bộ nhớ bằng giao diện sqlite3_deserialize[]. Tất nhiên, điều này sẽ cần rất nhiều bộ nhớ nếu bạn có một cơ sở dữ liệu lớn. Ngoài ra, bất kỳ thay đổi nào bạn thực hiện đối với cơ sở dữ liệu sẽ không được lưu lại vào đĩa trừ khi bạn lưu chúng một cách rõ ràng bằng lệnh ". lưu" hoặc ". lệnh sao lưu"

Tùy chọn --append khiến cơ sở dữ liệu SQLite được thêm vào một tệp hiện có thay vì hoạt động như một tệp độc lập. Xem phần mở rộng appendvfs để biết thêm thông tin

Tùy chọn --zip khiến tệp đầu vào được chỉ định được hiểu là tệp lưu trữ ZIP thay vì tệp cơ sở dữ liệu SQLite

Tùy chọn --hexdb khiến nội dung cơ sở dữ liệu được đọc từ các dòng đầu vào tiếp theo ở định dạng hex, thay vì từ một tệp riêng biệt trên đĩa. Có thể sử dụng công cụ dòng lệnh "dbtotxt" để tạo văn bản phù hợp cho cơ sở dữ liệu. Tùy chọn --hexdb được các nhà phát triển SQLite sử dụng cho mục đích thử nghiệm. Chúng tôi không biết bất kỳ trường hợp sử dụng nào cho tùy chọn này ngoài thử nghiệm và phát triển SQLite nội bộ

8. 1. Ghi kết quả vào tệp

Theo mặc định, sqlite3 gửi kết quả truy vấn đến đầu ra tiêu chuẩn. Bạn có thể thay đổi điều này bằng cách sử dụng ". đầu ra" và ". một lần" lệnh. Chỉ cần đặt tên của tệp đầu ra làm đối số cho. đầu ra và tất cả các kết quả truy vấn tiếp theo sẽ được ghi vào tệp đó. Hoặc sử dụng. lệnh một lần thay vì. đầu ra và đầu ra sẽ chỉ được chuyển hướng cho một lệnh tiếp theo trước khi trở lại bảng điều khiển. Sử dụng. đầu ra không có đối số để bắt đầu ghi lại vào đầu ra tiêu chuẩn. Ví dụ

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
0

Nếu ký tự đầu tiên của ". đầu ra" hoặc ". once" tên tệp là ký hiệu ống dẫn [". "] thì các ký tự còn lại được coi là một lệnh và đầu ra được gửi tới lệnh đó. Điều này giúp dễ dàng đưa kết quả của một truy vấn vào một số quy trình khác. Ví dụ: lệnh "open -f" trên máy Mac sẽ mở trình soạn thảo văn bản để hiển thị nội dung mà nó đọc từ đầu vào tiêu chuẩn. Vì vậy, để xem kết quả của một truy vấn trong trình soạn thảo văn bản, người ta có thể nhập

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
1

Nếu ". đầu ra" hoặc ". một lần" có đối số là "-e" thì đầu ra được thu thập vào một tệp tạm thời và trình soạn thảo văn bản hệ thống được gọi trên tệp văn bản đó. Do đó, lệnh ". một lần -e" đạt được kết quả tương tự như ". Một lần '. open -f'" nhưng với lợi ích là có thể di động trên tất cả các hệ thống

Nếu ". đầu ra" hoặc ". once" có đối số "-x", khiến chúng tích lũy đầu ra dưới dạng Giá trị được phân tách bằng dấu phẩy [CSV] trong tệp tạm thời, sau đó gọi tiện ích hệ thống mặc định để xem tệp CSV [thường là chương trình bảng tính] trên kết quả. Đây là một cách nhanh chóng để gửi kết quả của một truy vấn đến một bảng tính để xem dễ dàng

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
2

Các ". excel" là bí danh của ". một lần -x". Nó làm chính xác điều tương tự

8. 2. Đọc SQL từ một tệp

Trong chế độ tương tác, sqlite3 đọc văn bản đầu vào [câu lệnh SQL hoặc lệnh dấu chấm] từ bàn phím. Tất nhiên, bạn cũng có thể chuyển hướng đầu vào từ một tệp khi khởi chạy sqlite3, nhưng sau đó bạn không có khả năng tương tác với chương trình. Đôi khi sẽ rất hữu ích khi chạy tập lệnh SQL có trong tệp nhập các lệnh khác từ dòng lệnh. Đối với điều này, ". read" dot-lệnh được cung cấp

Các ". read" nhận một đối số duy nhất [thường là] tên của tệp để đọc văn bản đầu vào

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
3

Các ". read" tạm thời ngừng đọc từ bàn phím và thay vào đó lấy đầu vào của nó từ tệp có tên. Khi đến cuối tệp, đầu vào sẽ trở lại bàn phím. Tệp tập lệnh có thể chứa các lệnh dấu chấm, giống như đầu vào tương tác thông thường

Nếu lập luận để ". đọc" bắt đầu bằng ". ", thì thay vì mở đối số dưới dạng tệp, nó sẽ chạy đối số [không có ký tự " ở đầu. "] làm lệnh, sau đó sử dụng đầu ra của lệnh đó làm đầu vào. Do đó, nếu bạn có một tập lệnh tạo SQL, bạn có thể thực thi trực tiếp SQL đó bằng một lệnh tương tự như sau

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
4

8. 3. Các hàm I/O tệp

Trình bao dòng lệnh thêm hai hàm SQL do ứng dụng xác định để tạo điều kiện thuận lợi cho việc đọc nội dung từ một tệp vào một cột trong bảng và ghi nội dung của một cột vào một tệp tương ứng

Hàm readfile[X] SQL đọc toàn bộ nội dung của tệp có tên X và trả về nội dung đó dưới dạng BLOB. Điều này có thể được sử dụng để tải nội dung vào một bảng. Ví dụ

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
5

Hàm SQL writefile[X,Y] ghi blob Y vào tệp có tên X và trả về số byte đã ghi. Sử dụng chức năng này để trích xuất nội dung của một cột trong bảng thành một tệp. Ví dụ

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
6

Lưu ý rằng các hàm readfile[X] và writefile[X,Y] là các hàm mở rộng và không được tích hợp vào thư viện SQLite cốt lõi. Các thói quen này có sẵn dưới dạng tiện ích mở rộng có thể tải trong ext/misc/fileio. c trong kho lưu trữ mã nguồn SQLite

8. 4. Hàm SQL chỉnh sửa []

CLI có một hàm SQL tích hợp khác có tên edit[]. Edit[] nhận một hoặc hai đối số. Đối số đầu tiên là một giá trị - thường là một chuỗi nhiều dòng lớn sẽ được chỉnh sửa. Đối số thứ hai là lệnh gọi trình soạn thảo văn bản. [Nó có thể bao gồm các tùy chọn để ảnh hưởng đến hành vi của biên tập viên. ] Nếu đối số thứ hai bị bỏ qua, biến môi trường VISUAL sẽ được sử dụng. Hàm edit[] ghi đối số đầu tiên của nó vào một tệp tạm thời, gọi trình chỉnh sửa trên tệp tạm thời, đọc lại tệp trở lại bộ nhớ sau khi trình chỉnh sửa hoàn tất, sau đó trả về văn bản đã chỉnh sửa

Hàm edit[] có thể được sử dụng để thay đổi giá trị văn bản lớn. Ví dụ

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
7

Trong ví dụ này, nội dung của tài liệu. trường nội dung cho mục nhập tài liệu. tên là "báo cáo-15" sẽ được gửi đến biên tập viên. Sau khi trình chỉnh sửa trở lại, kết quả sẽ được ghi lại vào tài liệu. lĩnh vực cơ thể

Thao tác mặc định của edit[] là gọi trình soạn thảo văn bản. Nhưng bằng cách sử dụng một chương trình chỉnh sửa thay thế trong đối số thứ hai, bạn cũng có thể sử dụng nó để chỉnh sửa hình ảnh hoặc các tài nguyên phi văn bản khác. Ví dụ: nếu bạn muốn sửa đổi hình ảnh JPEG tình cờ được lưu trữ trong một trường của bảng, bạn có thể chạy

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
8

Chương trình chỉnh sửa cũng có thể được sử dụng làm trình xem, chỉ cần bỏ qua giá trị trả về. Ví dụ: để chỉ nhìn vào hình ảnh trên, bạn có thể chạy

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open ex1.db
sqlite>
9

8. 5. Nhập tệp dưới dạng CSV hoặc các định dạng khác

Sử dụng ". import" để nhập CSV [giá trị được phân tách bằng dấu phẩy] hoặc dữ liệu được phân tách tương tự vào bảng SQLite. Các ". lệnh nhập khẩu" nhận hai đối số là nguồn dữ liệu sẽ được đọc và tên của bảng SQLite mà dữ liệu sẽ được chèn vào. Đối số nguồn là tên của tệp sẽ được đọc hoặc nếu nó bắt đầu bằng dấu ". " ký tự, nó chỉ định một lệnh sẽ được chạy để tạo dữ liệu đầu vào

Lưu ý rằng điều quan trọng là phải đặt "chế độ" trước khi chạy ". lệnh nhập". Điều này là thận trọng để ngăn trình bao dòng lệnh cố diễn giải văn bản tệp đầu vào dưới dạng một số định dạng khác với cách tệp được cấu trúc. Nếu các tùy chọn --csv hoặc --ascii được sử dụng, chúng sẽ kiểm soát các dấu phân cách đầu vào nhập. Mặt khác, các dấu phân cách là những dấu hiệu có hiệu lực đối với chế độ đầu ra hiện tại

Để nhập vào một bảng không có trong lược đồ "chính", tùy chọn --schema có thể được sử dụng để chỉ định rằng bảng nằm trong một số lược đồ khác. Điều này có thể hữu ích cho cơ sở dữ liệu ATTACH'ed hoặc để nhập vào bảng TEMP

Khi nào. quá trình nhập được chạy, việc xử lý hàng đầu tiên của nó phụ thuộc vào việc bảng mục tiêu đã tồn tại chưa. Nếu nó không tồn tại, bảng sẽ được tạo tự động và nội dung của hàng đầu tiên được sử dụng để đặt tên cho tất cả các cột trong bảng. Trong trường hợp này, nội dung dữ liệu bảng được lấy từ hàng đầu vào thứ hai và tiếp theo. Nếu bảng mục tiêu đã tồn tại, mọi hàng của đầu vào, kể cả hàng đầu tiên, được coi là nội dung dữ liệu thực tế. Nếu tệp đầu vào chứa một hàng nhãn cột ban đầu, bạn có thể tạo. lệnh nhập bỏ qua hàng đầu tiên đó bằng tùy chọn "--skip 1"

Dưới đây là ví dụ về cách sử dụng, tải bảng tạm thời có sẵn từ tệp CSV có tên cột ở hàng đầu tiên

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
0

Trong khi đọc dữ liệu đầu vào ở chế độ khác với 'ascii', ". nhập" diễn giải đầu vào dưới dạng bản ghi bao gồm các trường theo thông số kỹ thuật RFC 4180 với ngoại lệ này. Bản ghi đầu vào và dấu tách trường được đặt theo chế độ hoặc bằng cách sử dụng. lệnh tách. Các trường luôn có thể loại bỏ trích dẫn để đảo ngược trích dẫn được thực hiện theo RFC 4180, ngoại trừ ở chế độ ascii

Để nhập dữ liệu có dấu phân cách tùy ý và không có trích dẫn, trước tiên hãy đặt chế độ ascii [". mode ascii"], sau đó đặt dấu phân cách trường và bản ghi bằng cách sử dụng ". lệnh tách". Điều này sẽ ngăn chặn trích dẫn. Trên ". nhập", dữ liệu sẽ được chia thành các trường và bản ghi theo các dấu phân cách được chỉ định

8. 6. Xuất sang CSV

Để xuất bảng SQLite [hoặc một phần của bảng] dưới dạng CSV, chỉ cần đặt "chế độ" thành "csv" rồi chạy truy vấn để trích xuất các hàng mong muốn của bảng. Đầu ra sẽ được định dạng dưới dạng CSV theo RFC 4180

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
1

Trong ví dụ trên, ". headers on" khiến các nhãn cột được in dưới dạng hàng đầu tiên của đầu ra. Điều này có nghĩa là hàng đầu tiên của tệp CSV kết quả sẽ chứa các nhãn cột. Nếu nhãn cột không được mong muốn, hãy đặt ". tiêu đề tắt" thay vào đó. [Các ". cài đặt tiêu đề tắt" là cài đặt mặc định và có thể được bỏ qua nếu tiêu đề chưa được bật trước đó. ]

Dòng ". một khi FILENAME" khiến tất cả đầu ra truy vấn chuyển vào tệp được đặt tên thay vì được in trên bảng điều khiển. Trong ví dụ trên, dòng đó khiến nội dung CSV được ghi vào một tệp có tên "C. /công việc/dữ liệu. csv"

Dòng cuối cùng của ví dụ [". hệ thống c. /công việc/dữ liệu. csv"] có tác dụng tương tự như nhấp đúp vào tệp c. /công việc/dữ liệu. tệp csv trong cửa sổ. Thao tác này thường sẽ hiển thị chương trình bảng tính để hiển thị tệp CSV

Lệnh đó chỉ hoạt động như được viết trên Windows. Dòng tương đương trên máy Mac sẽ là

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
2

Trên Linux và các hệ thống unix khác, bạn sẽ cần nhập một cái gì đó như

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
3

8. 6. 1. Xuất sang Excel

Để đơn giản hóa việc xuất sang bảng tính, CLI cung cấp ". excel" nắm bắt đầu ra của một truy vấn đơn lẻ và gửi đầu ra đó tới chương trình bảng tính mặc định trên máy tính chủ. Sử dụng nó như thế này

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
4

Lệnh trên ghi đầu ra của truy vấn dưới dạng CSV vào tệp tạm thời, gọi trình xử lý mặc định cho tệp CSV [thường là chương trình bảng tính ưa thích như Excel hoặc LibreOffice], sau đó xóa tệp tạm thời. Đây thực chất là một phương pháp rút gọn để thực hiện trình tự ". csv", ". một lần" và ". system" các lệnh được mô tả ở trên

Các ". excel" thực sự là một bí danh cho ". một lần -x". Tùy chọn -x để. một lần khiến nó ghi kết quả dưới dạng CSV vào một tệp tạm thời có tên là ". csv", sau đó gọi trình xử lý mặc định của hệ thống cho các tệp CSV

Cũng có một ". once -e" hoạt động tương tự, ngoại trừ việc nó đặt tên tệp tạm thời bằng ". txt" để trình soạn thảo văn bản mặc định cho hệ thống sẽ được gọi, thay vì bảng tính mặc định

8. 6. 2. Xuất sang TSV [các giá trị được phân tách bằng tab]

Xuất sang TSV thuần túy, không có bất kỳ trích dẫn trường nào, có thể được thực hiện bằng cách nhập ". tab chế độ" trước khi chạy truy vấn. Tuy nhiên, đầu ra sẽ không được đọc chính xác trong chế độ tab bởi ". nhập" nếu nó chứa các ký tự trích dẫn kép. Để lấy TSV được trích dẫn theo RFC 4180 để có thể nhập nó ở chế độ tab với ". nhập", trước tiên hãy nhập ". chế độ csv", sau đó nhập '. dấu tách "\t"' trước khi chạy truy vấn

Ngoài việc đọc và ghi các tệp cơ sở dữ liệu SQLite, chương trình sqlite3 cũng sẽ đọc và ghi các tệp lưu trữ ZIP. Chỉ cần chỉ định tên tệp lưu trữ ZIP thay cho tên tệp cơ sở dữ liệu SQLite trên dòng lệnh ban đầu hoặc trong phần ". open" và sqlite3 sẽ tự động phát hiện tệp đó là tệp lưu trữ ZIP thay vì cơ sở dữ liệu SQLite và sẽ mở tệp như vậy. Điều này hoạt động bất kể hậu tố tập tin. Vì vậy, bạn có thể mở các tệp JAR, DOCX và ODP cũng như bất kỳ định dạng tệp nào khác thực sự là tệp lưu trữ ZIP và SQLite sẽ đọc nó cho bạn

Kho lưu trữ ZIP dường như là một cơ sở dữ liệu chứa một bảng duy nhất với lược đồ sau

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
5

Vì vậy, ví dụ: nếu bạn muốn xem hiệu quả nén [được biểu thị bằng kích thước của nội dung được nén so với kích thước tệp không nén ban đầu] cho tất cả các tệp trong kho lưu trữ ZIP, được sắp xếp từ nén nhiều nhất đến nén ít nhất, bạn có thể chạy

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
6

Hoặc sử dụng các chức năng tệp I/O, bạn có thể trích xuất các thành phần của kho lưu trữ ZIP

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
7

9. 1. Cách truy cập kho lưu trữ ZIP được triển khai

Shell dòng lệnh sử dụng bảng ảo Zipfile để truy cập kho lưu trữ ZIP. Bạn có thể thấy điều này bằng cách chạy lệnh ". schema" khi tệp nén ZIP được mở

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
8

Khi mở một tệp, nếu ứng dụng khách dòng lệnh phát hiện ra rằng tệp là kho lưu trữ ZIP thay vì cơ sở dữ liệu SQLite, thì nó thực sự mở một cơ sở dữ liệu trong bộ nhớ và sau đó trong cơ sở dữ liệu trong bộ nhớ đó, nó sẽ tạo một phiên bản của bảng ảo Zipfile.

Quá trình xử lý đặc biệt để mở các kho lưu trữ ZIP là một thủ thuật của trình bao dòng lệnh, không phải thư viện SQLite cốt lõi. Vì vậy, nếu bạn muốn mở kho lưu trữ ZIP dưới dạng cơ sở dữ liệu trong ứng dụng của mình, bạn sẽ cần kích hoạt mô-đun bảng ảo Zipfile, sau đó chạy câu lệnh CREATE VIRTUAL TABLE thích hợp

Sử dụng ". dump" để chuyển đổi toàn bộ nội dung của cơ sở dữ liệu thành một tệp văn bản UTF-8. Tệp này có thể được chuyển đổi trở lại thành cơ sở dữ liệu bằng cách chuyển nó trở lại thành sqlite3

Một cách hay để tạo một bản sao lưu trữ của cơ sở dữ liệu là

SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .. many SQL commands omitted ...
sqlite> .save ex1.db
sqlite>
9

Điều này tạo ra một tệp có tên ex1. bãi rác. gz chứa mọi thứ bạn cần để xây dựng lại cơ sở dữ liệu sau này hoặc trên một máy khác. Để xây dựng lại cơ sở dữ liệu, chỉ cần gõ

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
0

Định dạng văn bản là SQL thuần túy nên bạn cũng có thể sử dụng. lệnh kết xuất để xuất cơ sở dữ liệu SQLite sang các công cụ cơ sở dữ liệu SQL phổ biến khác. Như thế này

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
1

Giống như ". đổ" lệnh, ". phục hồi" cố gắng chuyển đổi toàn bộ nội dung của tệp cơ sở dữ liệu thành văn bản. Điểm khác biệt là thay vì đọc dữ liệu bằng giao diện cơ sở dữ liệu SQL thông thường, ". phục hồi" cố gắng tập hợp lại cơ sở dữ liệu dựa trên dữ liệu được trích xuất trực tiếp từ càng nhiều trang cơ sở dữ liệu càng tốt. Nếu cơ sở dữ liệu bị hỏng, ". recovery" thường có thể khôi phục dữ liệu từ tất cả các phần chưa bị hỏng của cơ sở dữ liệu, trong khi ". dump" dừng lại khi bắt gặp dấu hiệu tham nhũng đầu tiên

Nếu ". recovery" khôi phục một hoặc nhiều hàng mà nó không thể gán cho bất kỳ bảng cơ sở dữ liệu nào, tập lệnh đầu ra sẽ tạo bảng "lost_and_found" để lưu trữ các hàng mồ côi. Lược đồ của bảng Lost_and_found như sau

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
2

Bảng "lost_and_found" chứa một hàng cho mỗi hàng mồ côi được khôi phục từ cơ sở dữ liệu. Ngoài ra, có một hàng cho mỗi mục nhập chỉ mục được khôi phục không thể được quy cho bất kỳ chỉ mục SQL nào. Điều này là do, trong cơ sở dữ liệu SQLite, cùng một định dạng được sử dụng để lưu trữ các mục nhập chỉ mục SQL và các mục nhập bảng KHÔNG CÓ ROWID

ColumnContentsrootpgnoMặc dù không thể gán hàng cho một bảng cơ sở dữ liệu cụ thể, nhưng nó có thể là một phần của cấu trúc cây trong tệp cơ sở dữ liệu. Trong trường hợp này, số trang gốc của cấu trúc cây đó được lưu trữ trong cột này. Hoặc, nếu trang mà hàng được tìm thấy không phải là một phần của cấu trúc cây, thì cột này sẽ lưu một bản sao của giá trị trong cột "pgno" - số trang của trang mà hàng được tìm thấy trên đó. Trong nhiều trường hợp, mặc dù không phải tất cả, tất cả các hàng trong bảng Lost_and_found có cùng giá trị trong cột này đều thuộc về cùng một bảng. pgnoSố trang của trang mà hàng này được tìm thấy. nfieldSố trường trong hàng này. idNếu hàng đến từ bảng KHÔNG CÓ ROWID, cột này chứa NULL. Mặt khác, nó chứa giá trị rowid số nguyên 64 bit cho hàng. c0, c1, c2. Các giá trị cho mỗi cột của hàng được lưu trữ trong các cột này. Các ". recovery" tạo bảng Lost_and_found với số lượng cột theo yêu cầu của hàng mồ côi dài nhất

Nếu lược đồ cơ sở dữ liệu đã khôi phục đã chứa một bảng có tên "lost_and_found", thì ". recovery" sử dụng tên "lost_and_found0". Nếu tên "lost_and_found0" cũng đã được sử dụng, "lost_and_found1", v.v. Tên mặc định "lost_and_found" có thể bị ghi đè bằng cách gọi ". phục hồi" bằng công tắc --lost-and-found. Ví dụ: để có tập lệnh đầu ra, hãy gọi bảng "orphaned_rows"

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
3

Bạn có thể thêm các hàm SQL do ứng dụng xác định tùy chỉnh mới, trình tự đối chiếu, bảng ảo và VFS vào trình bao dòng lệnh trong thời gian chạy bằng cách sử dụng lệnh ". tải" lệnh. Đầu tiên, xây dựng tiện ích mở rộng dưới dạng DLL hoặc thư viện dùng chung [như được mô tả trong tài liệu Tiện ích mở rộng có thể tải trong thời gian chạy], sau đó nhập

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
4

Lưu ý rằng SQLite tự động thêm hậu tố mở rộng thích hợp [". dll" trên cửa sổ, ". dylib" trên máy Mac, ". so" trên hầu hết các unix khác] vào tên tệp mở rộng. Nói chung, nên chỉ định tên đường dẫn đầy đủ của tiện ích mở rộng

SQLite tính toán điểm vào cho tiện ích mở rộng dựa trên tên tệp tiện ích mở rộng. Để ghi đè lựa chọn này, chỉ cần thêm tên của tiện ích làm đối số thứ hai vào ". tải" lệnh

Mã nguồn cho một số tiện ích mở rộng hữu ích có thể được tìm thấy trong thư mục con ext/misc của cây nguồn SQLite. Bạn có thể sử dụng nguyên trạng các tiện ích mở rộng này hoặc làm cơ sở để tạo các tiện ích mở rộng tùy chỉnh của riêng mình nhằm giải quyết các nhu cầu cụ thể của riêng bạn

Các ". sha3sum" dot-command tính toán hàm băm SHA3 của nội dung cơ sở dữ liệu. Để rõ ràng, hàm băm được tính toán trên nội dung cơ sở dữ liệu, không phải biểu diễn của nó trên đĩa. Điều này có nghĩa là, ví dụ: VACUUM hoặc chuyển đổi bảo toàn dữ liệu tương tự không làm thay đổi hàm băm

Các ". lệnh sha3sum" hỗ trợ các tùy chọn "--sha3-224", "--sha3-256", "--sha3-384" và "--sha3-512" để xác định loại SHA3 sẽ sử dụng cho hàm băm. Mặc định là SHA3-256

Lược đồ cơ sở dữ liệu [trong bảng sqlite_schema] thường không được bao gồm trong hàm băm, nhưng có thể được thêm vào bằng tùy chọn "--schema"

Các ". sha3sum" nhận một đối số tùy chọn duy nhất là mẫu THÍCH. Nếu có tùy chọn này, chỉ những bảng có tên khớp với mẫu LIKE mới được băm

Các ". lệnh sha3sum" được triển khai với sự trợ giúp của chức năng mở rộng "sha3_query[]" đi kèm với shell dòng lệnh

Các ". lệnh selftest" cố gắng xác minh rằng cơ sở dữ liệu còn nguyên vẹn và không bị hỏng. Các. lệnh selftest tìm kiếm một bảng trong lược đồ có tên "selftest" và được định nghĩa như sau

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
5

Các. lệnh selftest đọc các hàng của bảng selftest trong selftest. không đặt hàng. Đối với mỗi hàng 'ghi nhớ', nó ghi văn bản bằng 'cmd' vào đầu ra. Đối với mỗi hàng 'run', nó chạy văn bản 'cmd' dưới dạng SQL và so sánh kết quả với giá trị trong 'ans' và hiển thị thông báo lỗi nếu kết quả khác nhau

Nếu không có bảng selftest, ". lệnh tự kiểm tra" chạy PRAGMA integration_check

Các ". lệnh selftest --init" tạo bảng selftest nếu nó chưa tồn tại, sau đó nối thêm các mục kiểm tra hàm băm SHA3 của nội dung của tất cả các bảng. Các lần chạy tiếp theo của ". selftest" sẽ xác minh rằng cơ sở dữ liệu không bị thay đổi theo bất kỳ cách nào. Để tạo các kiểm tra nhằm xác minh rằng một tập hợp con của các bảng không thay đổi, chỉ cần chạy lệnh ". selftest --init" sau đó XÓA các hàng selftest tham chiếu đến các bảng không phải là hằng số

Các ". archive" lệnh chấm và tùy chọn dòng lệnh "-A" cung cấp hỗ trợ tích hợp cho định dạng Lưu trữ SQLite. Giao diện tương tự như lệnh "tar" trên các hệ thống unix. Mỗi lời gọi của ". ar" phải chỉ định một tùy chọn lệnh duy nhất. Các lệnh sau đây có sẵn cho ". lưu trữ"

OptionLong OptionPurpose-c--createTạo một kho lưu trữ mới chứa các tệp được chỉ định. -x--extractTrích xuất các tệp được chỉ định từ kho lưu trữ. -i--chènThêm tệp vào kho lưu trữ hiện có. -r--removeXóa tệp khỏi kho lưu trữ. -t--listLiệt kê các tệp trong kho lưu trữ. -u--updateThêm tệp vào kho lưu trữ hiện có nếu chúng đã thay đổi

Cũng như tùy chọn lệnh, mỗi lần gọi ". ar" có thể chỉ định một hoặc nhiều tùy chọn sửa đổi. Một số tùy chọn công cụ sửa đổi yêu cầu đối số, một số thì không. Các tùy chọn sửa đổi sau đây có sẵn

OptionLong OptionPurpose-v--verboseLiệt kê từng tệp khi nó được xử lý. -f FILE--file FILENếu được chỉ định, hãy sử dụng tệp FILE làm kho lưu trữ. Mặt khác, giả sử rằng cơ sở dữ liệu "chính" hiện tại là kho lưu trữ được vận hành trên đó. -a FILE--append FILELike --file, sử dụng tệp FILE làm tệp lưu trữ, nhưng mở tệp bằng apndvfs VFS để tệp lưu trữ sẽ được thêm vào cuối FILE nếu FILE đã tồn tại. -C DIR--thư mục DIRNếu được chỉ định, diễn giải tất cả các đường dẫn tương đối tương ứng với DIR, thay vì thư mục làm việc hiện tại. -g--globSử dụng glob[Y,X] để so khớp đối số với tên trong kho lưu trữ. -n--dryrunHiển thị SQL sẽ được chạy để thực hiện thao tác lưu trữ, nhưng không thực sự thay đổi bất cứ điều gì. ---- Tất cả các từ dòng lệnh tiếp theo là đối số lệnh, không phải tùy chọn

Để sử dụng dòng lệnh, hãy thêm các tùy chọn dòng lệnh kiểu ngắn ngay sau "-A", không có khoảng trắng ở giữa. Tất cả các đối số tiếp theo được coi là một phần của. lệnh lưu trữ. Ví dụ, các lệnh sau là tương đương

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
6

Các tùy chọn kiểu dài và ngắn có thể được trộn lẫn. Ví dụ, sau đây là tương đương

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
7

Ngoài ra, đối số đầu tiên theo sau ". ar" có thể là sự kết hợp của dạng rút gọn của tất cả các tùy chọn bắt buộc [không có ký tự "-"]. Trong trường hợp này, đối số cho các tùy chọn yêu cầu chúng được đọc từ dòng lệnh tiếp theo và bất kỳ từ nào còn lại được coi là đối số lệnh. Ví dụ

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
8

15. 1. Lưu trữ SQLite Tạo lệnh

Tạo một kho lưu trữ mới, ghi đè lên bất kỳ kho lưu trữ hiện có nào [trong db "chính" hiện tại hoặc trong tệp được chỉ định bởi tùy chọn --file]. Mỗi đối số theo sau các tùy chọn là một tệp để thêm vào kho lưu trữ. Thư mục được nhập khẩu đệ quy. Xem ở trên để biết ví dụ

15. 2. Lệnh giải nén lưu trữ SQLite

Trích xuất các tệp từ kho lưu trữ [vào thư mục làm việc hiện tại hoặc vào thư mục được chỉ định bởi tùy chọn --directory]. Các tệp hoặc thư mục có tên khớp với các đối số, như bị ảnh hưởng bởi tùy chọn --glob, được trích xuất. Hoặc, nếu không có đối số nào tuân theo các tùy chọn, tất cả các tệp và thư mục sẽ được trích xuất. Mọi thư mục được chỉ định đều được trích xuất đệ quy. Đó là lỗi nếu không thể tìm thấy bất kỳ tên hoặc mẫu khớp nào được chỉ định trong kho lưu trữ

sqlite> .help
.archive ..             Manage SQL archives
.auth ON|OFF             Show authorizer callbacks
.backup ?DB? FILE        Backup DB [default "main"] to FILE
.bail on|off             Stop after hitting an error.  Default OFF
.binary on|off           Turn binary output on or off.  Default OFF
.cd DIRECTORY            Change the working directory to DIRECTORY
.changes on|off          Show number of rows changed by SQL
.check GLOB              Fail if output since .testcase does not match
.clone NEWDB             Clone data into NEWDB from the existing database
.connection [close] [#]  Open or close an auxiliary database connection
.databases               List names and files of attached databases
.dbconfig ?op? ?val?     List or change sqlite3_db_config[] options
.dbinfo ?DB?             Show status information about the database
.dump ?OBJECTS?          Render database content as SQL
.echo on|off             Turn command echo on or off
.eqp on|off|full|..     Enable or disable automatic EXPLAIN QUERY PLAN
.excel                   Display the output of next command in spreadsheet
.exit ?CODE?             Exit this program with return-code CODE
.expert                  EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto?   Change the EXPLAIN formatting mode.  Default: auto
.filectrl CMD ..        Run various sqlite3_file_control[] operations
.fullschema ?--indent?   Show schema and the content of sqlite_stat tables
.headers on|off          Turn display of headers on or off
.help ?-all? ?PATTERN?   Show help text for PATTERN
.import FILE TABLE       Import data from FILE into TABLE
.imposter INDEX TABLE    Create imposter table TABLE on index INDEX
.indexes ?TABLE?         Show names of indexes
.limit ?LIMIT? ?VAL?     Display or change the value of an SQLITE_LIMIT
.lint OPTIONS            Report potential schema issues.
.load FILE ?ENTRY?       Load an extension library
.log FILE|off            Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?       Set output mode
.nonce STRING            Disable safe mode for one command if the nonce matches
.nullvalue STRING        Use STRING in place of NULL values
.once ?OPTIONS? ?FILE?   Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE?   Close existing database and reopen FILE
.output ?FILE?           Send output to FILE or stdout if FILE is omitted
.parameter CMD ..       Manage SQL parameter bindings
.print STRING..         Print literal STRING
.progress N              Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE    Replace the standard prompts
.quit                    Exit this program
.read FILE               Read input from FILE
.recover                 Recover as much data as possible from corrupt db.
.restore ?DB? FILE       Restore content of DB [default "main"] from FILE
.save FILE               Write in-memory database into FILE
.scanstats on|off        Turn sqlite3_stmt_scanstatus[] metrics on or off
.schema ?PATTERN?        Show the CREATE statements matching PATTERN
.selftest ?OPTIONS?      Run tests defined in the SELFTEST table
.separator COL ?ROW?     Change the column and row separators
.session ?NAME? CMD ..  Create or control sessions
.sha3sum ..             Compute a SHA3 hash of database content
.shell CMD ARGS..       Run CMD ARGS.. in a system shell
.show                    Show the current values for various settings
.stats ?ARG?             Show stats or turn stats on or off
.system CMD ARGS..      Run CMD ARGS.. in a system shell
.tables ?TABLE?          List names of tables matching LIKE pattern TABLE
.testcase NAME           Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ..        Run various sqlite3_test_control[] operations
.timeout MS              Try opening locked tables for MS milliseconds
.timer on|off            Turn SQL timer on or off
.trace ?OPTIONS?         Output each SQL statement as it is run
.vfsinfo ?AUX?           Information about the top-level VFS
.vfslist                 List all available VFSes
.vfsname ?AUX?           Print the name of the VFS stack
.width NUM1 NUM2 ..     Set minimum column widths for columnar output
sqlite>
9

15. 3. Lệnh danh sách lưu trữ SQLite

Liệt kê nội dung của kho lưu trữ. Nếu không có đối số nào được chỉ định, thì tất cả các tệp được liệt kê. Mặt khác, chỉ những đối số phù hợp với các đối số, như bị ảnh hưởng bởi tùy chọn --glob, mới được liệt kê. Hiện tại, tùy chọn --verbose không thay đổi hành vi của lệnh này. Điều đó có thể thay đổi trong tương lai

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
0

15. 4. Các lệnh chèn và cập nhật lưu trữ SQLite

Các lệnh --update và --insert hoạt động giống như lệnh --create, ngoại trừ việc chúng không xóa kho lưu trữ hiện tại trước khi bắt đầu. Các phiên bản mới của tệp âm thầm thay thế các tệp hiện có có cùng tên, nhưng nếu không thì nội dung ban đầu của kho lưu trữ [nếu có] vẫn còn nguyên vẹn

Đối với lệnh --insert, tất cả các tệp được liệt kê sẽ được chèn vào kho lưu trữ. Đối với lệnh --update, các tệp chỉ được chèn nếu chúng không tồn tại trước đó trong kho lưu trữ hoặc nếu "mtime" hoặc "mode" của chúng khác với những gì hiện có trong kho lưu trữ

nút tương thích. Trước SQLite phiên bản 3. 28. 0 [2019-04-16] chỉ tùy chọn --update được hỗ trợ nhưng tùy chọn đó hoạt động giống như --insert ở chỗ nó luôn chèn lại mọi tệp bất kể nó có thay đổi hay không

15. 5. Lưu trữ SQLite Xóa lệnh

Lệnh --remove xóa các tệp và thư mục khớp với các đối số được cung cấp [nếu có] do bị ảnh hưởng bởi tùy chọn --glob. Đã xảy ra lỗi khi cung cấp các đối số không khớp với nội dung nào trong kho lưu trữ

15. 6. Thao tác trên kho lưu trữ ZIP

Nếu FILE là một kho lưu trữ ZIP chứ không phải là một kho lưu trữ SQLite, thì ". archive" và tùy chọn dòng lệnh "-A" vẫn hoạt động. Điều này được thực hiện bằng cách sử dụng phần mở rộng zipfile. Do đó, các lệnh sau gần như tương đương, chỉ khác nhau về định dạng đầu ra

Lệnh truyền thống Tương đương sqlite3. exe Lưu trữ Commandunzip. kho lưu trữ zipsqlite3 -Axf. kho lưu trữ zipunzip -l. kho lưu trữ zipsqlite3 -Atvf. zipzip -r kho lưu trữ2. zip dirsqlite3 -Acf archive2. thư mục zip

15. 7. SQL được sử dụng để triển khai các hoạt động lưu trữ SQLite

Các lệnh Lưu trữ Lưu trữ SQLite khác nhau được triển khai bằng cách sử dụng các câu lệnh SQL. Các nhà phát triển ứng dụng có thể dễ dàng thêm hỗ trợ đọc và viết Lưu trữ Lưu trữ SQLite vào các dự án của riêng họ bằng cách chạy SQL thích hợp

Để xem những câu lệnh SQL nào được sử dụng để triển khai thao tác Lưu trữ SQLite, hãy thêm tùy chọn --dryrun hoặc -n. Điều này làm cho SQL được hiển thị nhưng ngăn cản việc thực thi SQL

Các câu lệnh SQL được sử dụng để triển khai các hoạt động Lưu trữ SQLite sử dụng các phần mở rộng có thể tải khác nhau. Tất cả các tiện ích mở rộng này đều có sẵn trong cây nguồn SQLite trong thư mục con ext/misc/. Các tiện ích mở rộng cần thiết để hỗ trợ Lưu trữ SQLite đầy đủ bao gồm

  1. fileio. c — Tiện ích mở rộng này thêm các hàm SQL readfile[] và writefile[] để đọc và ghi nội dung từ các tệp trên đĩa. tập tin. tiện ích mở rộng c cũng bao gồm hàm có giá trị bảng fsdir[] để liệt kê nội dung của một thư mục và hàm lsmode[] để chuyển đổi các số nguyên st_mode dạng số từ lệnh gọi hệ thống stat[] thành các chuỗi có thể đọc được theo kiểu "ls -l

  2. hình vuông. c — Tiện ích mở rộng này thêm các hàm sqlar_compress[] và sqlar_uncompress[] cần thiết để nén và giải nén nội dung tệp khi nó được chèn và trích xuất từ ​​Kho lưu trữ SQLite

  3. zipfile. c — Tiện ích mở rộng này triển khai hàm có giá trị bảng "zipfile[FILE]" được sử dụng để đọc các tệp lưu trữ ZIP. Tiện ích mở rộng này chỉ cần thiết khi đọc kho lưu trữ ZIP thay vì kho lưu trữ SQLite

  4. appendvfs. c — Tiện ích mở rộng này triển khai VFS mới cho phép cơ sở dữ liệu SQLite được thêm vào một số tệp khác, chẳng hạn như tệp thực thi. Tiện ích mở rộng này chỉ cần thiết nếu tùy chọn --append cho. lệnh lưu trữ được sử dụng

SQLite cho phép các tham số ràng buộc xuất hiện trong câu lệnh SQL ở bất kỳ đâu mà giá trị bằng chữ được cho phép. Các giá trị cho các tham số này được đặt bằng cách sử dụng sqlite3_bind_. [] dòng API

Các tham số có thể được đặt tên hoặc đặt tên. Tham số không tên là một dấu chấm hỏi đơn ["?"]. Các tham số được đặt tên là một "?" . "?15" của "?123"] hoặc một trong các ký tự "$", ". ", hoặc "@" theo sau là tên chữ và số [ví dụ:. "$var1", ". xyz", "@bingo"]

Trình bao dòng lệnh này không gắn kết các tham số chưa đặt tên, nghĩa là chúng sẽ có giá trị là SQL NULL, nhưng các tham số được đặt tên có thể được gán giá trị. Nếu tồn tại một bảng TEMP có tên "sqlite_parameters" với lược đồ như thế này

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
1

Và nếu có một mục trong bảng đó trong đó cột khóa khớp chính xác với tên của tham số [bao gồm cả ký tự đầu "?", "$", ". ", hoặc "@"] thì tham số được gán giá trị của cột giá trị. Nếu không có mục nào tồn tại, tham số sẽ mặc định là NULL

Các ". tham số" tồn tại để đơn giản hóa việc quản lý bảng này. Các ". tham số init" [thường được viết tắt là ". param init"] tạo nhiệt độ. bảng sqlite_parameters nếu nó chưa tồn tại. Các ". danh sách param" hiển thị tất cả các mục trong tạm thời. bảng sqlite_parameter. Các ". xóa thông số" lệnh giảm nhiệt độ. bảng sqlite_parameter. Các ". đặt tham số KEY VALUE" và ". param unset KEY" lệnh tạo hoặc xóa các mục từ tạm thời. bảng sqlite_parameter

VALUE được chuyển đến ". param set KEY VALUE" có thể là một ký tự SQL hoặc bất kỳ biểu thức hoặc truy vấn SQL nào khác có thể được đánh giá để mang lại một giá trị. Điều này cho phép các giá trị của các loại khác nhau được đặt. Nếu đánh giá như vậy không thành công, thay vào đó, VALUE được cung cấp sẽ được trích dẫn và chèn dưới dạng văn bản. Bởi vì đánh giá ban đầu như vậy có thể thất bại hoặc không tùy thuộc vào nội dung GIÁ TRỊ, cách đáng tin cậy để nhận giá trị văn bản là đặt nó trong dấu ngoặc đơn được bảo vệ khỏi phân tích cú pháp đuôi lệnh được mô tả ở trên. Ví dụ: [trừ khi người ta dự định giá trị -1365]

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
2

Lưu ý rằng dấu ngoặc kép dùng để bảo vệ dấu ngoặc đơn và đảm bảo rằng văn bản được trích dẫn được phân tích thành một đối số

nhiệt độ. bảng sqlite_parameters chỉ cung cấp các giá trị cho các tham số trong shell dòng lệnh. nhiệt độ. bảng sqlite_parameter không ảnh hưởng đến các truy vấn được chạy trực tiếp bằng API ngôn ngữ C SQLite. Các ứng dụng riêng lẻ dự kiến ​​sẽ triển khai ràng buộc tham số của riêng chúng. Bạn có thể tìm kiếm "sqlite_parameters" trong mã nguồn shell dòng lệnh để xem cách shell dòng lệnh thực hiện liên kết tham số và sử dụng mã đó làm gợi ý về cách tự triển khai

Ghi chú. Lệnh này là thử nghiệm. Nó có thể bị xóa hoặc sửa đổi giao diện theo những cách không tương thích vào một thời điểm nào đó trong tương lai

Đối với hầu hết các cơ sở dữ liệu SQL không tầm thường, chìa khóa để thực hiện là tạo các chỉ mục SQL phù hợp. Trong ngữ cảnh này, "các chỉ mục SQL phù hợp" có nghĩa là các chỉ mục khiến các truy vấn mà ứng dụng cần tối ưu hóa chạy nhanh. Các ". Expert" có thể hỗ trợ điều này bằng cách đề xuất các chỉ mục có thể hỗ trợ các truy vấn cụ thể, nếu chúng có trong cơ sở dữ liệu

Các ". Expert" được đưa ra đầu tiên, tiếp theo là truy vấn SQL trên một dòng riêng biệt. Ví dụ, xem xét phiên sau

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
3

Ở trên, người dùng tạo lược đồ cơ sở dữ liệu [một bảng duy nhất - "x1"] và sau đó sử dụng ". Expert" để phân tích một truy vấn, trong trường hợp này là "CHỌN * TỪ x1 WHERE a=? . Công cụ trình bao khuyến nghị người dùng nên tạo một chỉ mục mới [chỉ mục "x1_idx_000123a7"] và đưa ra kế hoạch mà truy vấn sẽ sử dụng ở định dạng KẾ HOẠCH CÂU HỎI GIẢI THÍCH. Sau đó, người dùng tạo một chỉ mục với lược đồ tương đương và chạy lại phân tích trên cùng một truy vấn. Lần này, công cụ trình bao không đề xuất bất kỳ chỉ mục mới nào và đưa ra kế hoạch mà SQLite sẽ sử dụng cho truy vấn với các chỉ mục hiện có

Các ". Expert" chấp nhận các tùy chọn sau

OptionPurpose‑‑verboseNếu có, xuất báo cáo chi tiết hơn cho từng truy vấn được phân tích. ‑‑sample PERCENTThông số này mặc định là 0, gây ra lỗi ". Expert" để đề xuất các chỉ mục chỉ dựa trên truy vấn và lược đồ cơ sở dữ liệu. Điều này tương tự như cách trình lập kế hoạch truy vấn SQLite chọn chỉ mục cho các truy vấn nếu người dùng chưa chạy lệnh ANALYZE trên cơ sở dữ liệu để tạo thống kê phân phối dữ liệu

Nếu tùy chọn này được thông qua một đối số khác không, thì ". Expert" tạo số liệu thống kê phân phối dữ liệu tương tự cho tất cả các chỉ mục được xem xét dựa trên phần trăm PERCENT của các hàng hiện được lưu trữ trong mỗi bảng cơ sở dữ liệu. Đối với cơ sở dữ liệu có phân phối dữ liệu bất thường, điều này có thể dẫn đến đề xuất chỉ mục tốt hơn, đặc biệt nếu ứng dụng dự định chạy ANALYZE

Đối với cơ sở dữ liệu nhỏ và CPU hiện đại, thường không có lý do gì để không vượt qua "--sample 100". Tuy nhiên, việc thu thập số liệu thống kê phân phối dữ liệu có thể tốn kém đối với các bảng cơ sở dữ liệu lớn. Nếu thao tác quá chậm, hãy thử chuyển một giá trị nhỏ hơn cho tùy chọn --sample

Chức năng được mô tả trong phần này có thể được tích hợp vào các ứng dụng hoặc công cụ khác bằng cách sử dụng mã mở rộng chuyên gia SQLite

Lược đồ cơ sở dữ liệu kết hợp các chức năng tùy chỉnh SQL có sẵn thông qua cơ chế tải mở rộng có thể cần cung cấp đặc biệt để hoạt động với. tính năng chuyên gia. Vì tính năng này sử dụng các kết nối bổ sung để triển khai chức năng của nó nên các chức năng tùy chỉnh đó phải được cung cấp cho các kết nối bổ sung đó. Điều này có thể được thực hiện bằng các tùy chọn tải/sử dụng tiện ích mở rộng được mô tả tại Tự động tải tiện ích mở rộng được liên kết tĩnh và tiện ích mở rộng có thể tải liên tục

Bắt đầu với phiên bản 3. 37. 0 [27-11-2021], CLI có khả năng giữ nhiều kết nối cơ sở dữ liệu mở cùng một lúc. Chỉ có một kết nối cơ sở dữ liệu đang hoạt động tại một thời điểm. Các kết nối không hoạt động vẫn mở nhưng không hoạt động

Sử dụng ". kết nối" dot-lệnh [thường được viết tắt là ". conn"] để xem danh sách các kết nối cơ sở dữ liệu và chỉ báo kết nối nào hiện đang hoạt động. Mỗi kết nối cơ sở dữ liệu được xác định bởi một số nguyên từ 0 đến 9. [Có thể có tối đa 10 kết nối mở đồng thời. ] Thay đổi kết nối cơ sở dữ liệu khác, tạo nó nếu nó chưa tồn tại, bằng cách gõ ". conn" theo sau là số của nó. Đóng kết nối cơ sở dữ liệu bằng cách gõ ". conn close N" trong đó N là số kết nối

Mặc dù các kết nối cơ sở dữ liệu SQLite bên dưới hoàn toàn độc lập với nhau, nhưng nhiều cài đặt CLI, chẳng hạn như định dạng đầu ra, được chia sẻ trên tất cả các kết nối cơ sở dữ liệu. Do đó, thay đổi chế độ đầu ra trong một kết nối sẽ thay đổi nó trong tất cả chúng. Mặt khác, một số lệnh chấm như. mở chỉ ảnh hưởng đến kết nối hiện tại

CLI được xây dựng với một số tiện ích mở rộng SQLite không có trong thư viện SQLite. Một vài tính năng bổ sung không được mô tả trong các phần trước, cụ thể là

  • trình tự đối chiếu UINT xử lý các số nguyên không dấu được nhúng trong văn bản theo giá trị của chúng, cùng với văn bản khác, để sắp xếp;
  • số học thập phân như được cung cấp bởi phần mở rộng thập phân;
  • hàm có giá trị bảng generate_series[];
  • hỗ trợ cho các biểu thức chính quy mở rộng POSIX được liên kết với toán tử REGEXP

Có nhiều lệnh dấu chấm khác có sẵn trong trình bao dòng lệnh. xem ". help" để biết danh sách đầy đủ cho bất kỳ phiên bản và bản dựng cụ thể nào của SQLite

Một cách để sử dụng sqlite3 trong tập lệnh shell là sử dụng "echo" hoặc "cat" để tạo chuỗi lệnh trong tệp, sau đó gọi sqlite3 trong khi chuyển hướng đầu vào từ tệp lệnh đã tạo. Điều này hoạt động tốt và phù hợp trong nhiều trường hợp. Nhưng để thuận tiện hơn, sqlite3 cho phép nhập một lệnh SQL duy nhất trên dòng lệnh dưới dạng đối số thứ hai sau tên cơ sở dữ liệu. Khi chương trình sqlite3 được khởi chạy với hai đối số, đối số thứ hai được chuyển đến thư viện SQLite để xử lý, kết quả truy vấn được in trên đầu ra tiêu chuẩn ở chế độ danh sách và thoát khỏi chương trình. Cơ chế này được thiết kế để làm cho sqlite3 dễ sử dụng kết hợp với các chương trình như "awk". Ví dụ

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
4

Các lệnh SQLite thường được kết thúc bằng dấu chấm phẩy. Trong CLI, bạn cũng có thể sử dụng từ "GO" [phân biệt chữ hoa chữ thường] hoặc ký tự gạch chéo "/" trên một dòng để kết thúc lệnh. Chúng được SQL Server và Oracle sử dụng tương ứng và được SQLite CLI hỗ trợ để tương thích. Chúng sẽ không hoạt động trong sqlite3_exec[], vì CLI dịch các đầu vào này thành dấu chấm phẩy trước khi chuyển chúng xuống lõi SQLite

Có nhiều tùy chọn dòng lệnh có sẵn cho CLI. Sử dụng tùy chọn dòng lệnh --help để xem danh sách

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
5

CLI linh hoạt về định dạng tùy chọn dòng lệnh. Cho phép một hoặc hai ký tự "-" ở đầu. Do đó "-box" và "--box" có nghĩa giống nhau. Các tùy chọn dòng lệnh được xử lý từ trái sang phải. Do đó, tùy chọn "--box" sẽ ghi đè tùy chọn "--quote" trước đó

Hầu hết các tùy chọn dòng lệnh đều tự giải thích, nhưng một số thảo luận bổ sung xứng đáng bên dưới

23. 1. Tùy chọn dòng lệnh --safe

Tùy chọn dòng lệnh --safe cố gắng tắt tất cả các tính năng của CLI có thể gây ra bất kỳ thay đổi nào đối với máy chủ ngoài các thay đổi đối với tệp cơ sở dữ liệu cụ thể có tên trên dòng lệnh. Ý tưởng là nếu bạn nhận được một tập lệnh SQL lớn từ một nguồn không xác định hoặc không đáng tin cậy, bạn có thể chạy tập lệnh đó để xem nó làm gì mà không gặp rủi ro bị khai thác bằng cách sử dụng tùy chọn --safe. Tùy chọn --safe vô hiệu hóa [trong số những thứ khác]

  • Các. open, trừ khi tùy chọn --hexdb được sử dụng hoặc tên tệp là ". trí nhớ. ". Điều này ngăn tập lệnh đọc hoặc ghi bất kỳ tệp cơ sở dữ liệu nào không có tên trên dòng lệnh gốc
  • Lệnh ATTACH SQL
  • Các hàm SQL có tác dụng phụ có thể gây hại, chẳng hạn như edit[], fts3_tokenizer[], load_extension[], readfile[] và writefile[]
  • Các. lệnh lưu trữ
  • Các. sao lưu và. lưu lệnh
  • Các. lệnh nhập
  • Các. tải lệnh
  • Các. lệnh đăng nhập
  • Các. vỏ và. lệnh hệ thống
  • Các. vượt trội,. một lần và. lệnh đầu ra
  • Các lệnh khác có thể có tác dụng phụ có hại

Về cơ bản, bất kỳ tính năng nào của CLI đọc hoặc ghi từ một tệp trên đĩa ngoài tệp cơ sở dữ liệu chính đều bị tắt

23. 1. 1. Bỏ qua các hạn chế --safe cho các lệnh cụ thể

Nếu tùy chọn "--nonce NONCE" cũng được bao gồm trên dòng lệnh, đối với một số chuỗi NONCE lớn và tùy ý, thì ". lệnh nonce NONCE" [với cùng một chuỗi nonce lớn] sẽ cho phép câu lệnh SQL tiếp theo hoặc lệnh dấu chấm bỏ qua các giới hạn --safe

Giả sử bạn muốn chạy một tập lệnh đáng ngờ và tập lệnh đó yêu cầu một hoặc hai tính năng --safe thường tắt. Ví dụ: giả sử nó cần ĐÍNH KÈM thêm một cơ sở dữ liệu. Hoặc giả sử tập lệnh cần tải một tiện ích mở rộng cụ thể. Điều này có thể được thực hiện bằng cách đặt trước câu lệnh ATTACH [đã được kiểm tra cẩn thận] hoặc ". load" với một "thích hợp. nonce" và cung cấp cùng một giá trị nonce bằng cách sử dụng tùy chọn dòng lệnh "--nonce". Các lệnh cụ thể đó sau đó sẽ được phép thực thi bình thường, nhưng tất cả các lệnh không an toàn khác sẽ vẫn bị hạn chế

Việc sử dụng ". nonce" nguy hiểm theo nghĩa là một lỗi có thể cho phép một tập lệnh thù địch làm hỏng hệ thống của bạn. Vì vậy, sử dụng ". nonce" một cách cẩn thận, tiết kiệm và là phương sách cuối cùng khi không có cách nào khác để chạy tập lệnh trong chế độ --safe

Để biên dịch trình bao dòng lệnh trên các hệ thống unix và trên Windows bằng MinGW, lệnh configure-make thông thường sẽ hoạt động

Việc tạo cấu hình hoạt động cho dù bạn đang xây dựng từ các nguồn chính tắc từ cây nguồn hay từ một gói hợp nhất. Có ít phụ thuộc. Khi xây dựng từ các nguồn chính tắc, cần có một tclsh đang hoạt động. Nếu sử dụng gói hợp nhất, tất cả công việc tiền xử lý thường được thực hiện bởi tclsh sẽ được thực hiện và chỉ cần các công cụ xây dựng thông thường

Một thư viện nén zlib đang hoạt động là cần thiết để. lệnh lưu trữ để vận hành

Trên Windows với MSVC, hãy sử dụng nmake với Makefile. msc

Để hoạt động chính xác của. lệnh lưu trữ, tạo một bản sao của mã nguồn zlib vào thư mục con compat/zlib của cây nguồn và biên dịch theo cách này

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
6

24. 1. Tự xây dựng

Mã nguồn của giao diện dòng lệnh sqlite3 nằm trong một tệp duy nhất có tên "shell. c". cái vỏ. tệp nguồn c được tạo từ các nguồn khác, nhưng hầu hết mã cho shell. c có thể được tìm thấy trong src/shell. c. Trong. [Tái tạo vỏ. c bằng cách gõ "make shell. c" từ cây nguồn chính tắc. ] Biên dịch vỏ. c [cùng với mã nguồn thư viện sqlite3] để tạo tệp thực thi. Ví dụ

sqlite> .mode list
sqlite> select * from tbl1;
hello!|10
goodbye|20
sqlite>
7

Các tùy chọn thời gian biên dịch bổ sung sau đây được khuyến nghị để cung cấp trình bao dòng lệnh đầy đủ tính năng

Chủ Đề