안전하지 않은 SQL 마이그레이션을 잡습니다.
$ squabble sql/migration.sql
sql/migration.sql:4:46 ERROR: column "uh_oh" has a disallowed constraint [1004]
ALTER TABLE big_table ADD COLUMN uh_oh integer DEFAULT 0;
^
# Use --explain to get more information on a lint violation
$ squabble --explain 1004
ConstraintNotAllowed
When adding a column to an existing table, certain constraints can have
unintentional side effects, like locking the table or introducing
performance issues.
...Squabble은 편집기와 통합하여 SQL 파일의 오류를 포착 할 수 있습니다.
$ echo ' SELECT * FROM WHERE x = y; ' | squabble --reporter=plain
stdin:1:15 CRITICAL: syntax error at or near "WHERE"현재, 대부분의 규칙은 포스트 그레와 그 기발에 초점을 맞추고 있습니다. 그러나 Squabble은 모든 ANSI SQL을 구문 분석 할 수 있으며 다른 데이터베이스에 특정한 새로운 규칙에 감사드립니다!
$ pip3 install squabble
$ squabble --help메모
Squabble은 Python 3.5+에서만 지원됩니다
소스에서 설치하려면 :
$ git clone https://github.com/erik/squabble.git && cd squabble
$ python3 -m venv ve && source ve/bin/activate
$ python setup.py install
$ squabble --help 규칙 목록을 보려면 시도하십시오
$ squabble --list-rules그런 다음 규칙에 대한 더 많은 장황한 정보를 표시하려면 (예 : 이론적 근거 및 구성 옵션)
$ squabble --show-rule AddColumnDisallowConstraints구성 파일이 설치되면 명령 줄에서 명시 적으로 전달되거나 자동으로 조회 할 수 있습니다.
$ squabble -c path/to/config ... 명령 줄에 명시 적으로 제공되지 않으면 Squabble은 다음 장소에서 .squabblerc 라는 파일을 찾습니다 (순서대로).
./.squabblerc(git_repo_root)/.squabblerc~/.squabblerc -- squabble-enable:RuleName 또는 -- squabble-disable:RuleName .
예를 들어, 하나의 파일에 대해서만 RuleA 비활성화하고 RuleB 활성화하려면 다음을 수행 할 수 있습니다.
-- squabble-disable:RuleA
-- squabble-enable:RuleB config=value array=1,2,3
SELECT email FROM users WHERE ...; Squabble이 파일에서 실행되는 것을 방지하려면 -- squabble-disable 사용하십시오. 이것은 또한 구문 검사를 비활성화합니다. 이 플래그는 명령 줄 또는 파일의 나머지 부분에서 다른 구성보다 우선합니다.
{
"reporter" : " color " ,
"plugins" : [
" /some/directory/with/custom/rules "
],
"rules" : {
"AddColumnsDisallowConstraints" : {
"disallowed" : [ " DEFAULT " , " FOREIGN " , " NOT NULL " ]
}
}
} 물론이 공간에서 squabble 번째 도구는 아닙니다. 필요에 맞지 않으면 다음 도구 중 하나를 고려하십시오.
SELECT 문에 더 중점을 둡니다.이 프로젝트는 다음 없이는 불가능합니다.
문서에 사용 된 로고 이미지는 명사 프로젝트의 Gianni -Dolce Merda에 의해 만들어집니다.