Режимы командной строки

Режимы командной строки

help

Чтобы получить краткую справку, запустите gsqlcmd без параметров.

Используйте режим help, чтобы получить расширенную справку в командной строке.

Используйте режим help с параметром online, чтобы открыть онлайн справку.

Используйте режим help с параметром chm, чтобы запустить файл справки HTML:

gsqlcmd help chm

exec

Используйте этот режим для выполнения SQL-запросов и сценариев.

Например:

gsqlcmd exec db application-install.sql

В этом примере утилита выполняет сценарий из файла application-install.sql для базы данных, указанной в именованной строке подключения db.

Вы можете использовать маску файлов, в т.ч. zip-архивов, для выполнения сценариев SQL. Например:

gsqlcmd exec db application-install-*.sql

gsqlcmd exec db application-install.zip

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

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

gsqlcmd exec db @task.txt

Вы можете использовать SQL-запрос непосредственно в командной строке. Например:

gsqlcmd exec db "SELECT * FROM dbo.cashbook" cashbook.csv

В этом примере утилита выполняет запрос и выводит данные в файл cashbook.csv.

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

Например:

gsqlcmd exec db "SELECT * FROM dbo.cashbook" /asjson > cashbook.json

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

gsqlcmd exec db dbo.cashbook

gsqlcmd автоматически добавляет для таблиц и представлений "SELECT * FROM".

Используйте опции /limit и /offset для фильтрации выходных строк. Например:

gsqlcmd exec db dbo.cashbook /limit=10

Вы можете использовать ключевое слово exec или execute.

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

gsqlcmd db "SELECT * FROM dbo.cashbook"

Однако использование режима с ключевым словом немного быстрее.

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

Также вы можете указать полную строку подключения вместо именованного подключения.

Ниже приведены несколько примеров таких полных строк подключения .NET, OLE DB и ODBC.

gsqlcmd exec "System.Data.SqlClient;Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=SSPI" application-install.sql

gsqlcmd exec "Provider=MSOLEDBSQL;Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=SSPI" application-install.sql

gsqlcmd exec "Driver=ODBC Driver 13 for SQL Server;Server=.\SQLEXPRESS;Database=Test;Trusted_Connection=Yes" application-install.sql

gsqlcmd обнаруживает строки OLE DB с использованием префикса "Provider=" и строки ODBC с использованием префикса "Driver=".

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

Ниже приведены несколько примеров для SQLite, SQL Server Compact, DBF, Excel, CSV и текста:

gsqlcmd exec test.db   "SELECT * FROM cashbook"

gsqlcmd exec test.sdf  "SELECT * FROM cashbook"

gsqlcmd exec test.dbf  "SELECT * FROM test.dbf"

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

gsqlcmd exec test.csv  "SELECT * FROM test.csv"

gsqlcmd exec test.txt  "SELECT * FROM test.txt"

Во всех этих случаях gsqlcmd автоматически создает подходящее соединение .NET, OLE DB или ODBC.

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

gsqlcmd show-connection test.xslx ConnectionString

Используйте опции /commandTimeout и /connectionTimeout для установки времени ожидания.

Используйте опцию /noTransaction для выполнения сценариев в режиме без транзакций.

Используйте опцию /trace для вывода выполняемых команд.

select

Используйте режим select как синоним режима exec или convert.

Например, режим select с именованной строкой подключения является синонимом режима exec:

gsqlcmd select db dbo.cashbook

Обратите внимание, что gsqlcmd преобразует эту команду в режим exec в следующем виде:

gsqlcmd exec db "SELECT * FROM dbo.cashbook"

Режим выбора без именованного соединения эквивалентен режиму convert.

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

gsqlcmd select https://www.nasdaq.com/symbol/AAPL/dividend-history

gsqlcmd select aapl.json

gsqlcmd select "SELECT loc FROM https://www.savetodb.com/sitemap.xml" /noHeaders

gsqlcmd включает этот синоним, поскольку ключевое слово select описывает операции выборки намного лучше, чем ключевые слова exec или convert.

download

Используйте этот режим для загрузки файлов или выполнения веб-запросов.

Например:

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

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

gsqlcmd download https://www.savetodb.com/sitemap.xml *.*

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

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

gsqlcmd download @sitemap.txt *.*

Ниже приведен простой пакетный файл, который позволяет загружать файл sitemap.xml и его страницы веб-сайта:

@echo off

gsqlcmd download https://www.savetodb.com/sitemap.xml *.*

gsqlcmd convert "SELECT loc FROM sitemap.xml" sitemap.txt /noHeaders

gsqlcmd download @sitemap.txt *.*

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

gsqlcmd convert "SELECT loc FROM https://www.savetodb.com/sitemap.xml" /noHeaders | gsqlcmd download @ *.*

Вы можете использовать опцию /check для проверки только кодов состояний.

Например, чтобы получить коды статуса ответа для всех страниц в sitemap.xml, вы можете использовать команду:

gsqlcmd convert "SELECT loc FROM https://www.savetodb.com/sitemap.xml" /noHeaders | gsqlcmd download @ /check

gsqlcmd определяет URL-адреса следующей страницы и позволяет загружать несколько страниц для указанных начальных URL-адресов.

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

@echo off

set url="https://query1.finance.yahoo.com/v7/finance/options/{symbol}"

gsqlcmd download %url% src\*.JSON /taskfile=symbols.txt /echoOutputFileName /pages=20

В этом примере symbols.txt содержит биржевые символы, такие как

Symbol
AAPL
FB
GOOGL

Режим download поддерживает ряд параметров веб-запроса.

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

Также используйте /echoOutputFileName и параметры /echoUrl для отслеживания хода загрузки.

convert

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

gsqlcmd поддерживает следующие форматы ввода и вывода: XML, JSON, HTML, CSV и обычный текст.

Например:

gsqlcmd convert https://www.nasdaq.com/symbol/AAPL/dividend-history aapl.csv

В этом примере утилита загружает HTML-страницу, извлекает данные и сохраняет их в файл aapl.csv.

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

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

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

Вы можете найти множество таких примеров в папке Downloading and converting to CSV пакета загрузки gsqlcmd.

Например, ниже приведен пакетный файл, который конвертирует загруженные цепочки опционов из Yahoo Finance:

@echo off

gsqlcmd convert src\*.JSON csv\*.CSV ^
        /rootPath=*.*.*.calls,*.*.*.puts ^
        /add=Symbol=FileNameWithoutPage();LoadDate=FileDateTime() ^
        /quoteChar= /DateFormat=yyyy-MM-dd /echoInputFileName

Ниже еще один пример, который загружает и конвертирует исторические цены акций из MSN Money:

@echo off

set url="https://finance.services.appex.bing.com/Market.svc/ChartAndQuotes?symbols={symbol}&chartType=1y&isEOD=True&isCS=true&isVol=true"

gsqlcmd convert %url% src\{symbol}.JSON csv\*.CSV /taskfile=symbols.txt ^
        /rootPath=Chart.Series ^
        /skippedNodes=IsStitched ^
        /add=Symbol={Symbol} ^
        /quoteChar= /DateTimeFormat=yyyy-MM-dd /echoOutputFileName

Файл symbols.txt содержит биржевые символы, такие как

Symbol
AAPL
FB
GOOGL

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

import

Используйте этот режим для импорта данных в одной команде, вместо использования отдельных команд make и execute.

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

gsqlcmd import db data.csv /table=dbo.data

Вы можете определить требуемые команды, используя опции /insert, /update, /delete и /merge. Например:

gsqlcmd import db data.csv /table=dbo.data /insert
gsqlcmd import db data.csv /table=dbo.data /update
gsqlcmd import db data.csv /table=dbo.data /delete
gsqlcmd import db data.csv /table=dbo.data /merge

Чтобы выполнить хранимую процедуру для каждой строки, используйте имя хранимой процедуры в опции /table:

gsqlcmd import db data.csv /table=dbo.usp_insert_data

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

gsqlcmd import db data.csv /table=insert-template.sql

Обратите внимание, что вы можете использовать любой локальный или веб-источник данных в любом поддерживаемом формате: обычный текст, CSV, XML, JSON или HTML.

Например:

gsqlcmd import db https://www.nasdaq.com/symbol/AAPL/dividend-history /table=dbo.dividends /set=symbol=AAPL

Используйте опцию /add, чтобы добавить фиксированные значения для целевых столбцов, отсутствующих в источнике данных.

Используйте опцию /insertIdentity для вставки значений в столбцы идентификаторов.

Используйте опцию /formatFile, чтобы заменить имена исходных столбцов именами из файла форматирования.

Используйте опцию /keys, чтобы определить столбцы для предложения WHERE, если столбцы первичного ключа отсутствуют в источнике данных.

Например:

gsqlcmd import db data.csv /table=dbo.data /insert
gsqlcmd import db data.csv /table=dbo.data /update /keys=FirstName,LastName
gsqlcmd import db data.csv /table=dbo.data /delete /keys=FirstName,LastName
gsqlcmd import db data.csv /table=dbo.data /merge  /keys=FirstName,LastName

gsqlcmd Enterprise поддерживает импорт данных из другой базы данных одной командой с использованием источника данных в формате <connection>::<[query](command-line-parameters.htm#parameter-input- запрос)>.

Например:

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

Таким образом, вы можете импортировать данные между любыми поддерживаемыми базами данных, например, из MySQL в SQL Server и обратно.

Более того, вы можете получать начальные параметры для запросов select с помощью опции /taskfile. Например:

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

В этом примере gsqlcmd делает следующее:

  1. выполняет запрос get-parameters.sql для базы данных с именованным подключением db,
  2. подготавливает select-data.sql на основе полученных значений,
  3. выполняет select-data.sql в базе данных с именованным подключением db2,
  4. генерирует и выполняет команды INSERT в таблицу dbo.data для подключения db.

Обратите внимание, что gsqlcmd выполняет команду для каждой строки в результатах файла задач. Обычно, файлы задач, как get-parameters.sql, возвращают одну строку со столбцами для каждого выбранного параметра запроса.

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

make

Используйте этот режим для генерации команд INSERT, UPDATE, DELETE, MERGE, EXECUTE или пользовательских для каждой строки источника данных.

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

gsqlcmd make db data.csv data-insert.sql /table=dbo.data /insert
gsqlcmd make db data.csv data-update.sql /table=dbo.data /update
gsqlcmd make db data.csv data-delete.sql /table=dbo.data /delete
gsqlcmd make db data.csv data-merge.sql  /table=dbo.data /merge

Для генерации команд EXECUTE используйте имя хранимой процедуры вместо таблицы:

gsqlcmd make db data.csv data-execute.sql /table=dbo.usp_insert_data

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

gsqlcmd make-insert db data.csv data-custom.sql /table=insert-template.sql

Обратите внимание, что вы можете использовать любой локальный или веб-источник данных в любом поддерживаемом формате: текст, CSV, XML, JSON или HTML.

Используйте опцию /add, чтобы добавить фиксированные значения для целевых столбцов, отсутствующих в источнике данных.

Используйте опцию /insertIdentity для вставки значений в столбцы идентификаторов.

Используйте опцию /insertNulls, чтобы сохранять значения NULL в командах INSERT.

Используйте опцию /formatFile, чтобы заменить имена исходных столбцов именами из файла форматирования.

Используйте опцию /keys, чтобы определить столбцы для предложения WHERE, если столбцы первичного ключа отсутствуют в источнике данных.

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

Например:

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

Также, вы можете получать начальные параметры с помощью опции /taskfile. Например:

gsqlcmd make db db2::select-data.sql data-insert.sql /table=dbo.data /taskfile=db::get-parameters.sql

В этом примере gsqlcmd делает следующее:

  1. выполняет get-parameters.sql для соединения db,
  2. готовит запрос select-data.sql на основе полученных значений,
  3. выполняет select-data.sql для соединения db2,
  4. генерирует команды INSERT для соединения db.

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

make-fmt+

Используйте этот режим для создания набора файлов, создаваемых в следующих режимах: make-fmt, make-create, make-ace, make-bulk и make-ini.

Например:

gsqlcmd make-fmt+ data.csv

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

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

make-fmt

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

Например:

gsqlcmd make-fmt data.csv data.fmt

Например, data.csv содержит следующие данные:

FirstName;LastName
John;Doe
Jane;Doe

Для этих данных gsqlcmd создаст следующий файл data.fmt:

9.0
2
1   SQLCHAR   0  255  ";"          1   "FirstName"                    ""
2   SQLCHAR   0  255  "\r\n"       2   "LastName"                     ""

gsqlcmd генерирует non-XML файлы формата SQL Server.

Вы можете использовать такие файлы с функцией SQL Server OPENROWSET для импорта данных CSV в базы данных SQL Server.

Используйте режим make-bulk для создания готовых к использованию команд SELECT.

Вы можете изменить имена столбцов в файле выходного формата и использовать опцию /formatFile в нескольких режимах работы gsqlcmd.

Это самый простой способ замены имен исходных столбцов на имена столбцов целевой таблицы.

make-create

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

Например:

gsqlcmd make-create data.csv create-table.sql /table=dbo.data /mssql

Для примера данных, использованного выше, gsqlcmd генерирует следующий код:

CREATE TABLE [dbo].[data] (
    [ID] int IDENTITY(1,1) NOT NULL,
    [FirstName] nvarchar(255) NULL,
    [LastName] nvarchar(255) NULL,
  CONSTRAINT [PK_data_dbo] PRIMARY KEY ([ID])
);
GO
print N'Table [dbo].[data] created';
GO

Используйте опцию /table, чтобы указать целевую таблицу.

Используйте следующие опции, чтобы указать платформу целевой базы данных: /mssql, /sqlce, /mysql, /oracle, /db2, /nuodb, /pgsql, /snowflake, /sqlite.

Используйте опцию /formatFile, чтобы заменить имена исходных столбцов именами из файла форматирования.

Используйте опцию /keys, чтобы указать поля первичного ключа. Например:

gsqlcmd make-create data.csv create-table.sql /table=dbo.data /mssql /keys=FirstName,LastName

Эта команда генерирует следующий код:

CREATE TABLE [dbo].[data] (
    [FirstName] nvarchar(255) NOT NULL,
    [LastName] nvarchar(255) NOT NULL,
  CONSTRAINT [PK_data_dbo] PRIMARY KEY (
    [FirstName],
    [LastName]
  )
);
GO
print N'Table [dbo].[data] created';
GO

gsqlcmd генерирует текстовые столбцы с длиной по умолчанию 255. Отредактируйте длину полей перед выполнением команды.

make-ace

Используйте этот режим для генерации команды INSERT с функцией SQL Server OPENROWSET для импорта данных CSV в базы данных SQL Server с помощью поставщика MICROSOFT.ACE.OLEDB.12.0.

Например:

gsqlcmd make-ace data.csv insert-ace.sql /table=dbo.data

Команда выдает следующий результат для тестовых данных, использованных выше:

INSERT INTO dbo.data
    ( [FirstName]
    , [LastName]
    )
SELECT
    t.[FirstName]
    , t.[LastName]
FROM
    (
    SELECT
        [FirstName] AS [FirstName]
        , [LastName] AS [LastName]
    FROM
        OPENROWSET('MICROSOFT.ACE.OLEDB.12.0',
            'Text;Database=D:\Help\gsqlcmd;HDR=YES;Format=Delimited(;)',
            'SELECT * FROM [data.csv]') t
    ) t

Вы можете вручную изменить MICROSOFT.ACE.OLEDB.12.0 на MICROSOFT.ACE.OLEDB.16.0 и фактический путь к данным.

Используйте опцию /table, чтобы указать целевую таблицу.

Используйте опцию /formatFile, чтобы заменить имена исходных столбцов именами из файла форматирования.

Используйте следующие ссылки для загрузки поставщиков ACE.OLEDB:

Можно установить провайдер той же разрядности, что и установленный Microsoft Office.

Если у вас установлен 32-разрядный Microsoft Office в 64-разрядной версии Windows, используйте gsqlcmd32.exe для выполнения сгенерированных команд.

make-bulk

Используйте этот режим для генерации команды INSERT с функцией SQL Server OPENROWSET для импорта данных CSV в базы данных SQL Server.

Например:

gsqlcmd make-bulk data.csv insert-bulk.sql /table=dbo.data /formatFile=data.fmt /inputcodepage=65001

Команда выдает следующий результат для тестовых данных, использованных выше:

INSERT INTO dbo.data
    ( [FirstName]
    , [LastName]
    )
SELECT
    t.[FirstName]
    , t.[LastName]
FROM
    (
    SELECT
        [FirstName] AS [FirstName]
        , [LastName] AS [LastName]
    FROM
        OPENROWSET(
            BULK 'D:\Help\gsqlcmd\data.csv',
            FORMATFILE = 'D:\Help\gsqlcmd\data.fmt',
            CODEPAGE = '65001',
            FIRSTROW = 2) t
    ) t

Используйте опцию /table, чтобы указать целевую таблицу.

Используйте опцию /formatFile, чтобы заменить имена исходных столбцов именами из файла форматирования.

Используйте опцию /inputCodepage, чтобы указать кодовую страницу.

Вы можете использовать опцию /relative для удаления абсолютных путей. gsqlcmd автоматически определяет текущие пути в режиме exec.

make-ini

Используйте этот режим для создания и обновления определений файла schema.ini, который поддерживает импорт данных CSV в Microsoft Excel и базы данных с использованием поставщиков OLE DB и драйверов ODBC.

Например:

gsqlcmd make-ini data.csv schema.ini

Используйте опцию /formatFile, чтобы указать файл формата с фактическими именами столбцов.

Например:

gsqlcmd make-ini data.csv schema.ini /formatFile=data.fmt

Для поставщиков OLE DB и драйверов ODBC требуется файл schema.ini, если выполняемая команда содержит имена столбцов.

Например, первая команда не требует schema.ini, а вторая требует:

gsqlcmd select data.csv "SELECT * FROM data.csv"

gsqlcmd select data.csv "SELECT FirstName, LastName FROM data.csv"

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

make-select

Используйте этот режим для создания инструкции SQL SELECT на основе фактических данных в файле CSV.

Например:

gsqlcmd make-select data.csv select.sql /table=dbo.data /mssql

Для примера данных, использованного выше, gsqlcmd генерирует следующий код:

SELECT
    t.FirstName
    , t.LastName
FROM
    dbo.data t

Вы можете сгенерировать команду SELECT и для CSV-файла (опустите параметр /table):

gsqlcmd make-select data.csv select.sql

select.sql содержит следующий код:

SELECT
    t.FirstName
    , t.LastName
FROM
    [data.csv] t

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

gsqlcmd select select.sql

get-token

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

Например:

gsqlcmd get-token /clientJson=client_secret.json /tokenJson=access_token.json ^
                  /grantType=authorization_code ^
                  /scope=https://www.googleapis.com/auth/webmasters.readonly

В этом примере файл client_secret.json содержит необходимые параметры, за исключением типа авторизации и запрашиваемых прав в параметре scope.

Обычно вы можете экспортировать такие файлы со страниц зарегистрированных приложений.

Например, секретный файл клиента Google Search Console выглядит так:

{"installed":{
    "client_id":"123456789012-abcdefghijklmnopqrstuvwxyz123456.apps.googleusercontent.com",
    "project_id":"searchconsoleapi-123456",
    "auth_uri":"https://accounts.google.com/o/oauth2/auth",
    "token_uri":"https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
    "client_secret":"Abcdefghijklmnopqrstuvwx",
    "redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]
}}

Вместо использования файла с параметрами вы можете напрямую указать параметры OAuth.

Файл access_token.json, указанный в опции /tokenJson, является выходным файлом для полученного токена.

Например, файл токена Google Search Console выглядит так:

{
  "access_token": "ya29.abcdefghijklmnopqrstuv-1234567890123456789-abcdefghijklmnopqrstu_123456789012345678-abc-abcdefghijklmnopqrstuvwx-1234567890123",
  "expires_in": 3600,
  "refresh_token": "1/ABCDEFGHIJKLMNOPQRST-abcdefghijklmnopqrstuv",
  "scope": "https://www.googleapis.com/auth/webmasters.readonly",
  "token_type": "Bearer"
}

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

Значением по умолчанию параметра /grantType является authorization_code.

Значения параметра /scope специфичны для каждого API. См. документацию по используемому API.

refresh-token

Используйте этот режим для явного обновления токена OAuth2.

Например:

gsqlcmd refresh-token /clientJson=client_secret.json /tokenJson=access_token.json

См. комментарии к опциям /clientJson и /tokenJson в режиме get-token, описанном выше.

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

revoke-token

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

Например:

gsqlcmd revoke-token /clientJson=client_secret.json /tokenJson=access_token.json

См. комментарии к опциям /clientJson и /tokenJson в режиме get-token, описанном выше.

get-authcode

Используйте этот режим, чтобы получить код авторизации OAuth1 или OAuth2 для использования в сторонних приложениях.

gsqlcmd получает такие коды на первом этапе режима get-token, если это необходимо.

Например:

gsqlcmd get-authcode /clientJson=client_secret.json /tokenJson=access_token.json

См. комментарии к опциям /clientJson и /tokenJson в режиме get-token, описанном выше.

get-schema

Используйте этот режим для запроса GetSchema указанного соединения и коллекции.

Например:

gsqlcmd get-schema db tables

Вы можете использовать запрос SELECT в командной строке, например:

gsqlcmd get-schema test.xlsx "SELECT TABLE_NAME FROM tables"

Оба примера выбирают данные из коллекции таблиц.

Каждый поставщик .NET, OLE DB или ODBC поддерживает определенный набор коллекций.

Ниже приведен список общих коллекций:

  • Tables
  • Views
  • Procedures
  • DataTypes
  • Columns
  • Indexes
  • DataSourceInformation
  • ReservedWords
  • Restrictions

Ниже приведен список хорошо документированных коллекций:

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

Например, вы можете ограничить выбранные столбцы именем таблицы.

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

Например:

gsqlcmd get-schema test.xlsx columns,,,Sheet1$

Ниже приведен полный пример с предложением SELECT и именованным диапазоном имени рабочего листа с пробелами:

gsqlcmd get-schema test.xlsx "SELECT COLUMN_NAME FROM columns,,,'sales data$'Data"

create-database

Используйте этот режим для создания баз данных SQLite и SQL Server Compact.

Например:

gsqlcmd create-database test.db

gsqlcmd определяет типы баз данных по расширениям: SQLite для *.db и SQL Server Compact для *.sdf.

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

Например:

gsqlcmd create-database db

Также есть альтернативный способ создания баз данных с помощью именованного соединения и команды CreateDatabase.

Например:

gsqlcmd exec db CreateDatabase

gsqlcmd включает поставщиков .NET для SQLite и SQL Server Compact 4.0.

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

edit-connections

Используйте этот режим для запуска мастера gConnectionManager для редактирования именованных соединений в файле конфигурации gsqlcmd.exe.config.

Используйте опцию /local для редактирования файла конфигурации в текущем каталоге. Это значение по умолчанию.

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

Используйте опцию /user для редактирования файла конфигурации в каталоге %LocalAppData%\Gartle\gsqlcmd.

Именованные подключения из этого файла доступны только текущему пользователю.

Используйте опцию /app, чтобы отредактировать файл конфигурации в папке установки gsqlcmd.

Именованные соединения из этого файла обычно доступны для любого пользователя на данном компьютере.

Кроме того, вы можете использовать ключевое слово edit в качестве синонима. Например:

gsqlcmd edit /user

show-connections

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

Например:

gsqlcmd show-connections

Вы можете использовать опции /local, /пользователь, и /app для отображения соединений заданного файла конфигурации.

Например:

gsqlcmd show-connections /app

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

/mssql, /sqlce, /mysql, /oracle, /db2, /nuodb, /pgsql, /snowflake, /sqlite, /dbf, /foxpro, /csv, /excel

Например:

gsqlcmd show-connections /oracle

show-connection

Используйте этот режим для отображения свойств именованного подключения.

Например:

gsqlcmd show-connection db

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

Используйте следующие значения в качестве дополнительного параметра, чтобы получить значение указанного свойства строки подключения:

  • provider
  • defaultConnectionString
  • connectionString
  • serverType
  • server
  • database
  • filename
  • authentication
  • username
  • password

Например:

gsqlcmd show data.csv defaultConnectionString

Команда показывает следующее:

Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Text;HDR=Yes;FMT=Delimited"

В примере также используется synonym режима show-connection.

show-providers

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

Например:

gsqlcmd show-providers

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

/mssql, /sqlce, /mysql, /oracle, /db2, /nuodb, /pgsql, /snowflake, /sqlite, /dbf, /foxpro, /csv, /excel

Например:

gsqlcmd show-providers /excel

Эта команда может выводить следующее:

Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0
Driver=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
DSN=Excel Files

Используйте gsqlcmd32.exe для получения списка 32-разрядных поставщиков в 64-разрядной версии Windows. Например:

gsqlcmd32 show-providers /excel

Команда выводит следующие строки:

Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 12.0
Driver=Microsoft Excel Driver (*.xls)
DSN=Excel Files

show-roots

Используйте этот режим, чтобы найти значения для опции /rootPath анализатора JSON и XML.

Например, вы можете использовать следующую команду, чтобы получить возможные корни результирующего JSON для исторических цен от Yahoo Finance:

gsqlcmd show-roots AAPL.JSON

Команда выдает следующий набор строк:

chart
chart.result
chart.result.meta
chart.result.meta.currency
chart.result.meta.symbol
chart.result.meta.exchangeName
...
chart.result.timestamp <--
chart.result.indicators
chart.result.indicators.quote <--
chart.result.indicators.quote.close
chart.result.indicators.quote.high
chart.result.indicators.quote.open
chart.result.indicators.quote.low
chart.result.indicators.quote.volume
chart.result.indicators.adjclose
chart.result.indicators.adjclose.adjclose <--
chart.error

Чтобы извлечь исторические цены, вы можете использовать следующую команду, заменив общие пути звездочкой:

gsqlcmd convert AAPL.JSON AAPL.CSV /rootpath=*.*.timestamp,*.*.*.quote,*.*.*.*.adjclose

В большинстве случаев gsqlcmd автоматически определяет необходимые столбцы.

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

gsqlcmd convert AAPL.JSON AAPL.CSV

Однако указание корневых путей с другими опциями, как например /collapsedNodes, /keptNodes, /requiredColumns, или /skippedNodes позволяет получить требуемый результат практически для любого случая.

gsqlcmd выводит столбцы в исходном порядке.

Вы можете изменить порядок, добавить, удалить или переименовать столбцы с помощью команды SELECT следующим образом:

gsqlcmd convert "SELECT 'AAPL' AS symbol, timestamp AS time, open, high, low, close, volume, adjclose FROM AAPL.JSON" AAPL.CSV

show-html-tables

Используйте этот режим, чтобы найти номера таблиц для опции /rootPath синтаксического анализатора HTML.

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

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

Файл aapl.htm содержит полное содержимое веб-страницы.

Вы можете использовать следующую команду, чтобы очистить его и перечислить таблицы данных:

gsqlcmd show-html-tables aapl.htm aapl-tables.htm /openOutput

Вы увидите, что история дивидендов находится в таблице 3. Т.е. можно использовать следующую команду для извлечения данных:

gsqlcmd convert aapl.htm aapl.csv /rootPath=3

В большинстве случаев gsqlcmd автоматически определяет требуемые таблицы данных. Используйте параметр /rootPath для извлечения данных из конкретной таблицы.

clean-html

Используйте этот режим для удаления сценариев, объявлений классов CSS, атрибутов, комментариев или узлов из файлов HTML.

Например:

gsqlcmd clean-html aapl.htm aapl-clean.htm /cutComments

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

autoCorrectedTags, cutAttributes, cutComments, cutIDs, cutTags

Обратите внимание, что вы также можете очищать файлы в режимах download и convert с помощью опции /cleanHtml, который имеет те же настройки.

del-if-html

Используйте этот режим, чтобы удалить файлы HTML, полученные вместо ожидаемых данных XML или JSON, чтобы пропустить их дальнейшую обработку.

Например:

gsqlcmd del-if-html input\*.htm

del-if-empty

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

Например:

gsqlcmd del-if-empty output\*.csv

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

sleep

Используйте этот режим для ожидания определенного количества миллисекунд между запросами, чтобы избежать блокировки IP-адреса веб-сервером.

Например, чтобы делать два запроса в секунду в пакетном цикле, используйте задержку в 300-400 миллисекунд:

gsqlcmd sleep 300

gsqlcmd download ...

Если вы загружаете данные с нескольких URL-адресов с помощью файлов задач, используйте вместо этого опцию /delay.

В этом случае можно указать точную задержку между запросами:

gsqlcmd download @task.txt /delay=500

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

Например, чтобы повторять действие каждые 60 минут, используйте 3600000 миллисекунд (60*60*1000):

gsqlcmd sleep 3600000

start <any command>

Чтобы начать действие в указанное время, используйте формат чч:мм[:сс]. Например:

gsqlcmd sleep 09:30

<any command>

Обратите внимание, что ваш компьютер не должен переходить в спящий режим, чтобы начать действие.

Вы можете использовать опции /hideWindow или /minimizeWindow, чтобы скрыть или свернуть окно консоли.

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

gsqlcmd sleep 60000 /minimizeWindow

stamp

Используйте этот режим для установки текущего времени в переменные среды.

Например:

for /F %%i in ('gsqlcmd.exe stamp') do set stamp=%%i

Формат по умолчанию - yyyyMMdd-HHmmss. Например, переменная штампа имеет значение вроде 20190321-124925.

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

Например:

for /F "delims==" %%i in ('gsqlcmd.exe stamp "yyyy-MM-dd HH:mm:ss"') do set stamp=%%i

version

Используйте этот режим, чтобы показать и протестировать версию gsqlcmd.

Чтобы показать версию, используйте:

gsqlcmd version

Чтобы проверить версию, укажите минимальную требуемую версию и используйте в качестве результата %errorlevel%.

Например:

@echo off

gsqlcmd version 5.1

if errorlevel 3 (
    echo Update gsqlcmd to version 5.1
    goto :EOF
)

gsqlcmd возвращает уровень ошибки 3, если требуемая версия больше текущей, и уровень ошибки 0, если требуемая версия меньше или равна.

hide-window

Используйте этот режим, чтобы скрыть окно консоли.

Например:

gsqlcmd hide-window

Используйте режим show-window для отображения окна.

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

В этом случае gsqlcmd показывает окно после завершения команды.

show-window

Используйте этот режим, чтобы показать окно консоли, скрытое в режиме hide-window.

Например:

gsqlcmd show-window

minimize-window

Используйте этот режим, чтобы свернуть окно консоли.

Например:

gsqlcmd minimize-window

Используйте режим restore-window для восстановления окна.

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

В этом случае gsqlcmd восстанавливает окно после завершения команды.

restore-window

Используйте этот режим для восстановления свернутого окна консоли.

Например:

gsqlcmd restore-window

auto-update

Используйте этот режим, чтобы запустить мастер проверки и установки обновлений.

Например:

gsqlcmd auto-update

register

Используйте этот режим для запуска мастера регистрации.

Например:

gsqlcmd register