CLI Reference

sqlfluff

SQLFluff is a modular SQL linter for humans.

sqlfluff [OPTIONS] COMMAND [ARGS]...

Options

--version

Show the version and exit.

Examples:

sqlfluff lint –dialect postgres .

sqlfluff lint –dialect postgres –rules L042 .

sqlfluff fix –dialect sqlite –rules L041,L042 src/queries

sqlfluff parse –dialect sqlite –templater jinja src/queries/common.sql

dialects

Show the current dialects available.

sqlfluff dialects [OPTIONS]

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.

fix

Fix SQL files.

PATH is the path to a sql file or directory to lint. This can be either a file (‘path/to/file.sql’), a path (‘directory/of/sql/files’), a single (‘-‘) character to indicate reading from stdin or a dot/blank (‘.’/’ ‘) which will be interpreted like passing the current working directory as a path argument.

sqlfluff fix [OPTIONS] [PATHS]...

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.

--disable-noqa

Set this flag to ignore inline noqa comments.

--logger <logger>

Choose to limit the logging to one of the loggers.

Options:

templater | lexer | parser | linter | rules | config

--bench

Set this flag to engage the benchmarking tool output.

-i, --ignore <ignore>

Ignore particular families of errors so that they don’t cause a failed run. For example –ignore parsing would mean that any parsing errors are ignored and don’t influence the success or fail of a run. –ignore behaves somewhat like noqa comments, except it applies globally. Multiple options are possible if comma separated: e.g. –ignore parsing,templating.

--encoding <encoding>

Specify encoding to use when reading and writing files. Defaults to autodetect.

--ignore-local-config

Ignore config files in default search path locations. This option allows the user to lint with the default config or can be used in conjunction with –config to only reference the custom config file.

--config <extra_config_path>

Include additional config file. By default the config is generated from the standard configuration files described in the documentation. This argument allows you to specify an additional configuration file that overrides the standard configuration files. N.B. cfg format is required.

-e, --exclude-rules <exclude_rules>

Exclude specific rules. For example specifying –exclude-rules L001 will remove rule L001 (Unnecessary trailing whitespace) from the set of considered rules. This could either be the allowlist, or the general set if there is no specific allowlist. Multiple rules can be specified with commas e.g. –exclude-rules L001,L002 will exclude violations of rule L001 and rule L002.

-r, --rules <rules>

Narrow the search to only specific rules. For example specifying –rules L001 will only search for rule L001 (Unnecessary trailing whitespace). Multiple rules can be specified with commas e.g. –rules L001,L002 will specify only looking for violations of rule L001 and rule L002.

-t, --templater <templater>

The templater to use (default=jinja)

Options:

raw | jinja | python | placeholder

-d, --dialect <dialect>

The dialect of SQL to lint

-f, --force

skip the confirmation prompt and go straight to applying fixes. Use this with caution.

-x, --fixed-suffix <fixed_suffix>

An optional suffix to add to fixed files.

-p, --processes <processes>

The number of parallel processes to run. Positive numbers work as expected. Zero and negative numbers will work as number_of_cpus - number. e.g -1 means all cpus except one. 0 means all cpus.

--disable-progress-bar

Disables progress bars.

--FIX-EVEN-UNPARSABLE

Enables fixing of files that have templating or parse errors. Note that the similar-sounding ‘–ignore’ or ‘noqa’ features merely prevent errors from being displayed. For safety reasons, the ‘fix’command will not make any fixes in files that have templating or parse errors unless ‘–FIX-EVEN-UNPARSABLE’ is enabled on the command lineor in the .sqlfluff config file.

--show-lint-violations

Show lint violations

Arguments

PATHS

Optional argument(s)

lint

Lint SQL files via passing a list of files or using stdin.

PATH is the path to a sql file or directory to lint. This can be either a file (‘path/to/file.sql’), a path (‘directory/of/sql/files’), a single (‘-‘) character to indicate reading from stdin or a dot/blank (‘.’/’ ‘) which will be interpreted like passing the current working directory as a path argument.

Linting SQL files:

sqlfluff lint path/to/file.sql sqlfluff lint directory/of/sql/files

Linting a file via stdin (note the lone ‘-’ character):

cat path/to/file.sql | sqlfluff lint - echo ‘select col from tbl’ | sqlfluff lint -

sqlfluff lint [OPTIONS] [PATHS]...

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.

--disable-noqa

Set this flag to ignore inline noqa comments.

--logger <logger>

Choose to limit the logging to one of the loggers.

Options:

templater | lexer | parser | linter | rules | config

--bench

Set this flag to engage the benchmarking tool output.

-i, --ignore <ignore>

Ignore particular families of errors so that they don’t cause a failed run. For example –ignore parsing would mean that any parsing errors are ignored and don’t influence the success or fail of a run. –ignore behaves somewhat like noqa comments, except it applies globally. Multiple options are possible if comma separated: e.g. –ignore parsing,templating.

--encoding <encoding>

Specify encoding to use when reading and writing files. Defaults to autodetect.

--ignore-local-config

Ignore config files in default search path locations. This option allows the user to lint with the default config or can be used in conjunction with –config to only reference the custom config file.

--config <extra_config_path>

Include additional config file. By default the config is generated from the standard configuration files described in the documentation. This argument allows you to specify an additional configuration file that overrides the standard configuration files. N.B. cfg format is required.

-e, --exclude-rules <exclude_rules>

Exclude specific rules. For example specifying –exclude-rules L001 will remove rule L001 (Unnecessary trailing whitespace) from the set of considered rules. This could either be the allowlist, or the general set if there is no specific allowlist. Multiple rules can be specified with commas e.g. –exclude-rules L001,L002 will exclude violations of rule L001 and rule L002.

-r, --rules <rules>

Narrow the search to only specific rules. For example specifying –rules L001 will only search for rule L001 (Unnecessary trailing whitespace). Multiple rules can be specified with commas e.g. –rules L001,L002 will specify only looking for violations of rule L001 and rule L002.

-t, --templater <templater>

The templater to use (default=jinja)

Options:

raw | jinja | python | placeholder

-d, --dialect <dialect>

The dialect of SQL to lint

-f, --format <format>

What format to return the lint result in (default=human).

Options:

human | json | yaml | github-annotation | github-annotation-native

--write-output <write_output>

Optionally provide a filename to write the results to, mostly used in tandem with –format. NB: Setting an output file re-enables normal stdout logging.

--annotation-level <annotation_level>

When format is set to github-annotation or github-annotation-native, default annotation level (default=notice). failure and error are equivalent.

Options:

notice | warning | failure | error

--nofail

If set, the exit code will always be zero, regardless of violations found. This is potentially useful during rollout.

--disregard-sqlfluffignores

Perform the operation regardless of .sqlfluffignore configurations

-p, --processes <processes>

The number of parallel processes to run. Positive numbers work as expected. Zero and negative numbers will work as number_of_cpus - number. e.g -1 means all cpus except one. 0 means all cpus.

--disable_progress_bar, --disable-progress-bar

Disables progress bars.

--persist-timing <persist_timing>

A filename to persist the timing information for a linting run to in csv format for external analysis. NOTE: This feature should be treated as beta, and the format of the csv file may change in future releases without warning.

Arguments

PATHS

Optional argument(s)

parse

Parse SQL files and just spit out the result.

PATH is the path to a sql file or directory to lint. This can be either a file (‘path/to/file.sql’), a path (‘directory/of/sql/files’), a single (‘-‘) character to indicate reading from stdin or a dot/blank (‘.’/’ ‘) which will be interpreted like passing the current working directory as a path argument.

sqlfluff parse [OPTIONS] PATH

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.

--disable-noqa

Set this flag to ignore inline noqa comments.

--logger <logger>

Choose to limit the logging to one of the loggers.

Options:

templater | lexer | parser | linter | rules | config

--bench

Set this flag to engage the benchmarking tool output.

-i, --ignore <ignore>

Ignore particular families of errors so that they don’t cause a failed run. For example –ignore parsing would mean that any parsing errors are ignored and don’t influence the success or fail of a run. –ignore behaves somewhat like noqa comments, except it applies globally. Multiple options are possible if comma separated: e.g. –ignore parsing,templating.

--encoding <encoding>

Specify encoding to use when reading and writing files. Defaults to autodetect.

--ignore-local-config

Ignore config files in default search path locations. This option allows the user to lint with the default config or can be used in conjunction with –config to only reference the custom config file.

--config <extra_config_path>

Include additional config file. By default the config is generated from the standard configuration files described in the documentation. This argument allows you to specify an additional configuration file that overrides the standard configuration files. N.B. cfg format is required.

-e, --exclude-rules <exclude_rules>

Exclude specific rules. For example specifying –exclude-rules L001 will remove rule L001 (Unnecessary trailing whitespace) from the set of considered rules. This could either be the allowlist, or the general set if there is no specific allowlist. Multiple rules can be specified with commas e.g. –exclude-rules L001,L002 will exclude violations of rule L001 and rule L002.

-r, --rules <rules>

Narrow the search to only specific rules. For example specifying –rules L001 will only search for rule L001 (Unnecessary trailing whitespace). Multiple rules can be specified with commas e.g. –rules L001,L002 will specify only looking for violations of rule L001 and rule L002.

-t, --templater <templater>

The templater to use (default=jinja)

Options:

raw | jinja | python | placeholder

-d, --dialect <dialect>

The dialect of SQL to lint

--recurse <recurse>

The depth to recursively parse to (0 for unlimited)

-c, --code-only

Output only the code elements of the parse tree.

-m, --include-meta

Include meta segments (indents, dedents and placeholders) in the output. This only applies when outputting json or yaml.

-f, --format <format>

What format to return the parse result in.

Options:

human | json | yaml

--write-output <write_output>

Optionally provide a filename to write the results to, mostly used in tandem with –format. NB: Setting an output file re-enables normal stdout logging.

--profiler

Set this flag to engage the python profiler.

--nofail

If set, the exit code will always be zero, regardless of violations found. This is potentially useful during rollout.

Arguments

PATH

Required argument

rules

Show the current rules in use.

sqlfluff rules [OPTIONS]

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.

version

Show the version of sqlfluff.

sqlfluff version [OPTIONS]

Options

-n, --nocolor

No color - output will be without ANSI color codes.

-v, --verbose

Verbosity, how detailed should the output be. This is stackable, so -vv is more verbose than -v. For the most verbose option try -vvvv or -vvvvv.

--version

Show the version and exit.