| 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)
  }