Type: | Package |
Title: | Wrapper for 'Python' Module 'sqlparse': Parse, Split, and Format 'SQL' |
Version: | 0.1.0 |
Description: | Wrapper for the non-validating 'SQL' parser 'Python' module 'sqlparse' https://github.com/andialbrecht/sqlparse. It allows parsing, splitting, and formatting 'SQL' statements. |
License: | GPL-3 |
Encoding: | UTF-8 |
LazyData: | true |
Imports: | reticulate (≥ 1.13) |
NeedsCompilation: | no |
Packaged: | 2019-09-13 12:17:20 UTC; michi |
Author: | Michael Simmler [aut, cre] |
Maintainer: | Michael Simmler <michael.simmler@agroscope.admin.ch> |
Repository: | CRAN |
Date/Publication: | 2019-09-20 09:50:02 UTC |
Install sqlparse Python package
Description
Install the sqlparse Python package into a virtual environment or conda environment.
Usage
install_sqlparse_py(method = "auto", conda = "auto",
envname = NULL, skip_if_available = FALSE)
Arguments
method |
Installation method passed to |
conda |
Path to conda executable passed to |
envname |
The name, or full path, of the environment in which the sqlparse Python package is to be installed. Alternatively, |
skip_if_available |
Boolean; if |
Value
0 on successful installation or 1 in case an error was raised
Examples
## Not run:
install_sqlparse_py()
## End(Not run)
Format SQL Statements
Description
Beautifies SQL statements according to numerous formatting settings.
Usage
sql_format(sql, keyword_case = NULL, identifier_case = NULL,
strip_comments = TRUE, reindent = FALSE, indent_width = 2,
indent_tabs = FALSE, indent_after_first = FALSE,
indent_columns = FALSE, reindent_aligned = FALSE,
use_space_around_operators = FALSE, wrap_after = NULL,
comma_first = FALSE, truncate_strings = NULL,
truncate_char = "[...]", encoding = NULL)
Arguments
sql |
Character string containing one or more SQL statements to be formatted. |
keyword_case |
Character string specifying how keywords are formatted. Options: |
identifier_case |
Character string specifying how identifiers are formatted. Options: |
strip_comments |
Boolean; if |
reindent |
Boolean; if |
indent_width |
Positive integer specifying the width of the indentation. Default: |
indent_tabs |
Boolean; if |
indent_after_first |
Boolean; if |
indent_columns |
Boolean; if |
reindent_aligned |
Boolean; if |
use_space_around_operators |
Boolean; if |
wrap_after |
Positive integer specifying the column limit (in characters) for wrapping comma-separated lists. If |
comma_first |
Boolean; if |
truncate_strings |
Positive integer; string literals longer than the given value are truncated. Default: |
truncate_char |
Character string appended if long string literals are truncated. Default: |
encoding |
Character string specifying the input encoding. Default: |
Details
This function is a wrapper to the sqlparse.format() function from the sqlparse Python module, which is a non-validating SQL parser.
Value
Character string containing the formatted SQL statements.
See Also
Examples
if (reticulate::py_module_available("sqlparse")) {
library("sqlparseR")
raw <- "SELECT * FROM FOO WHERE BAR > 4500;"
formatted <- sql_format(raw,
keyword_case = "capitalize",
identifier_case = "lower",
reindent = TRUE,
indent_after_first = TRUE)
cat(formatted)
}
Parse SQL Statements
Description
Parse one or several SQL statements (non-validating).
Usage
sql_parse(sql, encoding = NULL)
Arguments
sql |
Character string containing one or more SQL statements to be formatted. |
encoding |
Character string specifying the input encoding. Default: |
Details
This function is a wrapper to the sqlparse.parse() function from the sqlparse Python module, which is a non-validating SQL parser.
Value
List with reference class objects which are converted instances of the custom Python class Statement. These tree-ish representations of the parsed statements can be analyzed with a set of reference class methods (accessed via $). See the documentation of the corresponding Python methods: https://sqlparse.readthedocs.io/en/stable/analyzing/.
See Also
Examples
if (reticulate::py_module_available("sqlparse")) {
library("sqlparseR")
raw <- "select*from foo; select*from bar;"
parsed <- sql_parse(raw)
## Analyzing the parsed statements
# e.g., get name of identifier in second statement
n <- parsed[[2]]$get_name()
print(n)
# e.g., get a (Python) generator yielding ungrouped tokens of the first statement
token_it <- parsed[[1]]$flatten()
for (t in reticulate::iterate(token_it)) {
print(t)
}
}
Split SQL to Single Statements
Description
Split a string with (one or) several SQL statements into single statements.
Usage
sql_split(sql, encoding = NULL)
Arguments
sql |
Character string containing (one or) several SQL statements |
encoding |
Character string specifying the input encoding. Default: |
Details
This function is a wrapper to the sqlparse.split() function from the sqlparse python module, which is a non-validating SQL parser.
Value
Character vector with the single SQL statements.
See Also
Examples
if (reticulate::py_module_available("sqlparse")) {
library("sqlparseR")
raw <- "select*from foo; select*from bar;"
statements <- sql_split(raw)
print(statements)
}