Позиционные параметры

Позиционные параметры

<connection>

Параметр определяет подключение к базе данных.

Возможны три варианта указания соединения:

  1. Имя подключения
  2. Строка подключения
  3. Имя файла

Имя подключения

Первый вариант лучше, так как вы можете использовать короткие имена зашифрованных строк подключения, хранящихся в файлах конфигурации.

Например, файл gsqlcmd.exe.config может содержать следующие строки (показаны незашифрованными):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="master" connectionString="Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI" providerName="System.Data.OleDb" />
    <add name="mssql" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Test;Password=pass;User ID=user" providerName="System.Data.SqlClient" />
    <add name="mysql" connectionString="Server=localhost;Password=pass;User ID=user;Database=Test" providerName="MySql.Data.MySqlClient" />
    <add name="ora" connectionString="Provider=OraOLEDB.Oracle;Password=pass;User ID=user;Data Source=localhost/Test;PLSQLRSet=True" providerName="System.Data.OleDb" />
    <add name="db2" connectionString="Driver=IBM DB2 ODBC DRIVER;Hostname=localhost;Port=50000;Protocol=TCPIP;Database=Test;Pwd=pass;UID=user;LONGDATACOMPAT=1" providerName="System.Data.Odbc" />
    <add name="nuodb" connectionString="Server=localhost;Password=pass;User=user;Database=Test" providerName="NuoDb.Data.Client" />
    <add name="pgsql" connectionString="Server=localhost;Password=pass;User ID=user;Database=rtd" providerName="Npgsql" />
    <add name="sqlce" connectionString="Data Source=test.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="sqlite" connectionString="Data Source=test.db;Version=3;" providerName="System.Data.SQLite" />
  </connectionStrings>
</configuration>

Это позволяет использовать такие имена, как master, mssql, mysql и другие, в качестве параметра подключения в командной строке.

Например:

gsqlcmd exec master "select name from sys.databases"

Используйте режим edit-connections для редактирования подключений в визуальном режиме с помощью мастера gConnectionManager.

Строка подключения

Второй вариант позволяет указать строки подключения, такие как <ProviderName>;<ConnectionString>.

Например:

gsqlcmd exec "System.Data.OleDb;Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI" "select name from sys.databases"

Ниже приведены несколько примеров строк подключения:

System.Data.OleDb;Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI
System.Data.Odbc;Driver=ODBC Driver 13 for SQL Server;Server=.\SQLEXPRESS;Database=master;Trusted_Connection=Yes
System.Data.Odbc;DSN=master
System.Data.SqlClient;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI

Поставщики System.Data.OleDb и System.Data.Odbc можно опустить. Например, следующие строки также допустимы:

Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI
Driver=ODBC Driver 13 for SQL Server;Server=.\SQLEXPRESS;Database=master;Trusted_Connection=Yes
DSN=master

Вы можете передавать строки подключения, используя переменные среды. Например:

set connection="Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI"

gsqlcmd %connection% "select name from sys.databases"

Используйте двойные кавычки для таких переменных.

Имя файла

Вы можете использовать имена файлов локальной базы данных в качестве параметра подключения.

Например:

gsqlcmd exec test.xlsx "SELECT * FROM [sheet1$]"

gsqlcmd определяет подходящий провайдер и автоматически создает строки подключения.

Вы можете проверить фактическую строку подключения с помощью команды:

gsqlcmd show text.xlsx connectionString

<input query>

gsqlcmd позволяет использовать запросы в двойных кавычках непосредственно в командной строке.

Например:

gsqlcmd exec db "SELECT * FROM SYS.ALL_USERS"

gsqlcmd самостоятельно поддерживает предложения SELECT, FROM, WHERE и ORDER BY для веб и файловых источников данных.

Например:

gsqlcmd select "SELECT 'AAPL' AS Symbol, RecordDate, CashAmount AS Amount FROM https://www.nasdaq.com/symbol/AAPL/dividend-history" /limit=1

gsqlcmd Enterprise поддерживает также форму <connection>::<input query>, которая позволяет выполнить скрипт для указанного соединения.

Например, следующая команда выбирает данные из таблицы dbo.data соединения db2 и импортирует данные в таблицу dbo.data соединения db:

gsqlcmd import db "db2::SELECT * FROM dbo.data" /table=dbo.data

<input file>

Вы можете использовать абсолютные и относительные пути входных файлов.

Например:

gsqlcmd exec db application-install.sql

gsqlcmd автоматически распаковывает файлы gzip.

Например, вы можете использовать следующую команду для выборки данных из сжатого data.xml:

gsqlcmd select data.xml.gz

gsqlcmd Enterprise поддерживает форму <connection>::<input file>, которая позволяет выполнить скрипт для указанного соединения.

Например, следующая команда выбирает данные из соединения db2 и импортирует данные в таблицу dbo.data соединения db:

gsqlcmd import db db2::select-data.sql /table=dbo.data

<input mask>

Есть несколько способов, чтобы указать набор файлов для обработки:

  • Использование маски, например install-*.sql или input\*.csv
  • Использование имени папки, например input или input\
  • Использование zip-файла, например input\options.zip

gsqlcmd перед обработкой сортирует файлы в алфавитном порядке.

Соответственно, вы можете установить желаемый порядок именования файлов. Например, вы можете использовать файлы как:

install-01.sql
install-02.sql

и использовать простую команду, как например:

gsqlcmd exec db install-*.sql

Более того, вы можете заархивировать файлы и использовать команду, как например:

gsqlcmd exec db install.zip

<input command>

gsqlcmd позволяет выполнять внутренние команды ядра базы данных.

Например:

gsqlcmd exec test.db CreateDatabase

Поддерживаемые команды SQLite:

CreateDatabase

Поддерживаемые команды SQL Server Compact:

CreateDatabase | Compact | Repair | Shrink | Upgrade

<input collection>

Режим get-schema требует имени коллекции в качестве входного параметра.

См. подробности в описании режима get-schema.

<input url>

Параметр должен быть допустимым URL-адресом HTTP или HTTPS.

Например:

gsqlcmd download https://www.nasdaq.com/symbol/AAPL/dividend-history aapl.htm

URL-адреса могут содержать параметры, определенные в файлах задач с использованием формы {parameter}.

Например:

gsqlcmd download https://www.nasdaq.com/symbol/{symbol}/dividend-history {symbol}.htm

@<task file>

Файлы задач позволяют задавать наборы входных и выходных параметров и опций.

Например, вы можете поместить исходные файлы для выполнения, такие как install-01.sql и install-02.sql, в файл типа task.txt:

install-01.sql
install-02.sql

а затем выполните команду:

gsqlcmd exec db @task.txt

Используйте @, чтобы принудительно использовать входной файл в качестве файла задачи. В противном случае gsqlcmd будет использовать его как скрипт или источник данных.

Вы можете опустить @ в режиме download, поскольку его первый параметр принимает только URL-адреса.

Вы можете опустить имя файла задачи после символа @, чтобы прочитать строки задачи со стандартного ввода. Например:

gsqlcmd exec db @ < task.txt

Файл задачи, используемый в качестве позиционного параметра, может содержать один, два или три параметра, разделенных пробелами, в зависимости от режима.

Например, режим преобразования принимает три параметра. Поэтому можно создать такой файл:

https://www.nasdaq.com/symbol/AAPL/dividend-history aapl.htm aapl.csv
https://www.nasdaq.com/symbol/MSFT/dividend-history msft.htm msft.csv

и использовать команду:

gsqlcmd convert @task.txt

В приведенных выше примерах файл задачи не имеет заголовков.

Вы можете использовать файлы задач с заголовками для указания позиционных параметров и опций.

Например:

URL                                                   FileName  OutputFileName  Symbol
https://www.nasdaq.com/symbol/AAPL/dividend-history   aapl.htm  aapl.csv        AAPL
https://www.nasdaq.com/symbol/MSFT/dividend-history   msft.htm  msft.csv        AAPL

Также вы можете использовать файлы задач в формате CSV:

URL;FileName;OutputFileName;Symbol
https://www.nasdaq.com/symbol/AAPL/dividend-history;aapl.htm;aapl.csv;AAPL
https://www.nasdaq.com/symbol/MSFT/dividend-history;msft.htm;msft.csv;AAPL

URL, FileName и OutputFileName - это специальные имена входных позиционных параметров.

Другие столбцы используются в качестве опций или значений параметров команды. Например, вы можете добавить значения для таких опций как /add, /rootPath или [/pages](web-request-options.htm #option-страницы).

Обратите внимание, что вы можете указать файлы задач в опции /taskFile.

Таким образом, вы можете указать позиционные параметры в командной строке и параметры в файле задачи.

Например, для показанного выше примера можно поместить столбец Symbol в файл задачи и использовать следующую команду:

gsqlcmd convert https://www.nasdaq.com/symbol/{symbol}/dividend-history {symbol}.htm {symbol}.csv /taskFile=task.txt

См. подробности в описании опции /taskFile.

<output file>

Этот необязательный параметр определяет имя выходного файла.

По умолчанию gsqlcmd выводит выходные данные на консоль.

Расширение выходного файла определяет формат вывода по умолчанию:

*.txt  - text
*.csv  - CSV
*.htm  - HTML
*.html - HTML
*.xml  - XML
*.json - JSON

Используйте опции /asText, /asCsv, /asHtml, /asXml и /asJson для явного указания формата вывода.

<output mask>

Вы можете указать маску выходного файла на основе входных URL-адресов или имен файлов для создания имен выходных файлов.

Ниже приведены несколько примеров:

Входная маска   Выходная маска  Входной файл        Выходной файл
AAPL.htm        *.csv           AAPL.htm            AAPL.csv
*.htm           *.csv           AAPL.htm            AAPL.csv
options-*.htm   *.csv           options-AAPL.htm    options-AAPL.csv
htm\*.htm       csv\*.csv       htm\AAPL.htm        csv\AAPL.csv
csv\*.csv       output\*        csv\AAPL.csv        output\AAPL.csv
csv\*.csv       output\*.*      csv\AAPL.csv        output\AAPL.csv
csv\*.csv       output.csv      csv\AAPL.csv        output.csv

Вы можете использовать маску выходного файла с входными URL-адресами, так как gsqlcmd извлекает имена файлов из URL-адресов.

Например:

gsqlcmd download https://www.savetodb.com/download.htm *

gsqlcmd использует определенные параметры запроса, такие как тикеры или последние сегменты URL, чтобы определить имя файла.

Например, следующая команда сохраняет выходные данные в AAPL.json:

gsqlcmd download "https://finance.services.appex.bing.com/Market.svc/ChartAndQuotes?symbols=AAPL&chartType=1y" *.json