SQLite 스크립트 실행


102

이 명령을 사용하여 sqlite3 버전 3.7.7, unix 11.4.2를 시작합니다.

sqlite3 auction.db

auction.db가 아직 생성되지 않았습니다.

sqlite> auction.db < create.sql;

이 오류가 발생합니다. near "auction": syntax error

스크립트를 어떻게 실행할 수 있습니까?

답변:


128

이를 수행하는 방법에는 여러 가지가 있으며 한 가지 방법은 다음과 같습니다.

sqlite3 auction.db

뒤에 :

sqlite> .read create.sql

일반적으로 SQLite 프로젝트에는 정말 환상적인 문서가 있습니다! 나는 우리가 종종 문서보다 먼저 Google에 접근한다는 것을 알고 있지만 SQLite의 경우 문서는 실제로 최고의 기술 문서입니다. 깨끗하고 명확하며 간결합니다.


5
scritps에서 사용하기 위해, 당신은 실행할 수 있습니다 .read으로부터 직접 명령을 sqlite3명령 sqlite3 autction.db '.read create.sql'.
Cris Luengo

148

당신은 먹이고 싶은 create.sql로를 sqlite3하지 SQLite는 자체 내부에서, 쉘에서 :

$ sqlite3 auction.db < create.sql

SQLite의 SQL 버전은 <파일을 이해하지 못하며 쉘은 이해 합니다.


1
불행히도 모든 쉘이 <입력 리디렉션으로 이해 하는 것은 아닙니다 . (예, PowerShell.)
Alan

@Alan PowerShell에는 입력 리디렉션 메커니즘이 있습니다. 그리고 그렇지 않다면 항상 bitops의 접근 방식이 있습니다.
MU이 너무 짧

@muistooshort는 bitops에 대한 내 의견을 참조하십시오. sqlite 도트 명령은 sql 문 매개 변수에서 작동하므로 입력 리디렉션에 의존하지 않고 원하는 파일을 읽을 수 있습니다.
크리스 Becke

@ChrisBecke 그들은 다른 솔루션입니다. <SQLite 프롬프트를 즉시 종료하고 오류 코드를 셸에 반환합니다. .read file.sql프롬프트를 그대로두고 -init file.sql항상 0을 반환하므로 <스크립팅에 가장 적합합니다. 또한 .readWindows 경로를 지원하지 않는 것과 달리 크로스 플랫폼 입니다.
TWiStErRob

24

간단한 쿼리를 실행하고 쉘 스크립트로 돌아가려면 이것이 잘 작동한다고 생각합니다.

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

2
이것은 사실상 mu가 너무 짧은 대답입니다.
Thirty Two 대령

12
@ColonelThirtyTwo 예, 이것은 mu가 너무 짧은 대답에 매우 가깝습니다 . 추가 답변을 추가 한 이유는 명령을 저장할 SQL 파일을 만드는 추가 단계를 수행하는 대신 인라인 명령을 빠르게 실행하는 방법을 보여주기 위해서입니다.
remeika

5
@remeika 나는 인라인 명령이 될 것 실행할 수있는 더 관용적 인 방법으로 생각 sqlite3 example.db 'SELECT * FROM some_table;'하지 않고 에코 배관보다,
크리스토퍼 Shroba

1
또한 (편집 후) 에서뿐만 아니라 마지막 인수에서도 sqlite3실행할 명령을 읽는 것을 보여줍니다 stdin.
Rafael Almeida

4

PowerShell을 사용하는 경우

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

2

Windows CMD를 사용하는 경우이 명령을 사용하여 sqlite3를 사용하여 데이터베이스를 만들 수 있습니다.

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

그 이름이 sqlite3 인 데이터베이스가없는 경우 데이터베이스가 생성되고 이미있는 경우에는 어쨌든 실행하지만 "TABLENAME already exists"오류가 발생합니다.이 명령을 사용하여 이미있는 데이터베이스를 변경할 수도 있습니다. 데이터베이스 (하지만 확실하지 않음)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.