Позиционные параметры
<connection>
Параметр определяет подключение к базе данных.
Возможны три варианта указания соединения:
- Имя подключения
- Строка подключения
- Имя файла
Имя подключения
Первый вариант лучше, так как вы можете использовать короткие имена зашифрованных строк подключения, хранящихся в файлах конфигурации.
Например, файл 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