Настройка парсера

Настройка парсера

Содержание:

Преобразование HTML

gsqlcmd позволяет извлекать данные из HTML-таблиц.

Чтобы извлечь данные из нужной таблицы, используйте опцию /rootPath.

Например, чтобы загрузить дивиденды с сайта nasdaq.com, выполните:

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

Затем получите доступные таблицы с помощью команды:

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

Содержимое файла table.htm будет примерно таким:

Пример режима show-html-tables для дивидендов с nasdaq.com

Дивиденды находятся в таблице 3.

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

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

Или извлеките данные непосредственно с веб-страницы:

gsqlcmd convert http://www.nasdaq.com/symbol/aapl/dividend-history dividends.csv /rootPath=3 /quoteChar=

Полученный файл dividends.csv будет содержать данные в следующем формате:

ExEffDate;Type;CashAmount;DeclarationDate;RecordDate;PaymentDate
2019-02-08;Cash;0.73;2019-01-29;2019-02-11;2019-02-14
2018-11-08;Cash;0.73;2018-11-01;2018-11-12;2018-11-15
2018-08-10;Cash;0.73;2018-07-31;2018-08-13;2018-08-16
2018-05-11;Cash;0.73;2018-05-01;2018-05-14;2018-05-17
2018-02-09;Cash;0.63;2018-02-01;2018-02-12;2018-02-15

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

Сначала попробуйте простую команду с автоматическим определением:

gsqlcmd convert aapl.htm dividends.csv

Если на странице несколько таблиц с нужными данными, примените режим convert для каждой таблицы.

Если таблицы имеют одинаковую структуру, укажите несколько индексов в опции /rootPath, разделив их запятой, например: /rootPath=20,21,22.

Если таблица не содержит заголовков, используйте опцию /noSourceHeaders. В этом случае gsqlcmd добавит столбцы с именами типа F1, F2 и т.д.

Преобразование XML

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

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

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

Например, файл test.xml может содержать следующее:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <parent>
        <row id="1"><f1>data11</f1><f2>data12</f2></row>
        <row id="2"><f1>data21</f1><f2>data22</f2></row>
        <row id="3"><f1>data31</f1><f2>data32</f2></row>
    </parent>
</root>

Базовая команда convert выглядит так:

gsqlcmd convert test.xml test.csv

Полученный файл test.csv будет содержать:

id;"f1";"f2"
1;"data11";"data12"
2;"data21";"data22"
3;"data31";"data32"

gsqlcmd выбирает "лучший" корень данных.

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

gsqlcmd convert test.xml test.csv /rootPath=root.parent.row

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

gsqlcmd convert test.xml test.csv /rootPath=root.parent

Результат будет таким:

row_id;"row_f1";"row_f2"
1;"data11";"data12"
2;"data21";"data22"
3;"data31";"data32"

Используйте опцию /quoteChar для удаления кавычек:

gsqlcmd convert test.xml test.csv /rootPath=root.parent /quoteChar=
row_id;row_f1;row_f2
1;data11;data12
2;data21;data22
3;data31;data32

Используйте режим show-roots для отображения корневых узлов:

gsqlcmd show-roots test.xml

root
root.parent
root.parent.row
root.parent.row.id
root.parent.row.f1
root.parent.row.f2

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

/attributedColumns=<col>.<attr>[;...]
/collapsedNodes=<node>[;...]
/ignoredTags=<tag>[;...]
/keptNodes=<node>[;...]
/requiredColumns=<name>[;...]
/skippedNodes=<node>[;...]

Например, чтобы пропустить некоторые узлы, используйте опцию /skippedNodes:

gsqlcmd convert test.xml test.csv /quoteChar= /skippedNodes=f2

id;f1
1;data11
2;data21
3;data31

Преобразование JSON

Преобразование JSON аналогично XML, поскольку оба формата имеют иерархическую структуру.

Например, файл test.json может содержать следующее:

{"root":
  {"parent":[
    {"id":1,"f1":"data11","f2":"data12"},
    {"id":2,"f1":"data21","f2":"data22"},
    {"id":3,"f1":"data31","f2":"data32"}
  ]
}

Базовая команда convert возвращает следующее:

gsqlcmd convert test.json test.csv

Id;"F1";"F2"
1;"data11";"data12"
2;"data21";"data22"
3;"data31";"data32"

Синтаксический анализатор JSON делает первые буквы имен столбцов заглавными.

Используйте режим show-roots для отображения корневых узлов:

gsqlcmd show-roots test.json

root
root.parent
root.parent.row
root.parent.row.id
root.parent.row.f1
root.parent.row.f2

Вы можете выбрать необходимые данные с помощью опции /rootPath:

gsqlcmd convert test.json test.csv /rootPath=root /quoteChar=

Parent_id;Parent_f1;Parent_f2
1;data11;data12
2;data21;data22
3;data31;data32

Анализатор JSON поддерживает вывод для нескольких корневых узлов:

gsqlcmd convert test.json test.csv /rootPath=root.parent.f1,root.parent.f2 /quoteChar=

F1;F2
data11;data12
data21;data22
data31;data32

Вы можете использовать * вместо узлов:

gsqlcmd convert test.json test.csv /rootPath=*.*.f1,*.*.f2 /quoteChar=

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

Также обратите внимание на следующие опции для настройки парсера:

/keptNodes=<node>[;...]
/requiredColumns=<name>[;...]
/skippedNodes=<node>[;...]

Преобразование плоского текста

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

id  f1      f2
1   data11  data12
2   data21  data22
3   data31  data32

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

gsqlcmd convert test.txt test.csv

Полученный файл test.csv будет содержать:

id;"f1";"f2"
1;"data11";"data12"
2;"data21";"data22"
3;"data31";"data32"

Также вы можете использовать текстовые драйверы Microsoft ODBC и OLE DB для выбора и преобразования текстовых данных.

Сначала обновите файл schema.ini с помощью команды make-ini:

gsqlcmd make-ini test.txt schema.ini

Затем используйте команду exec для выборки данных:

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

В таких командах можно использовать функции SQL, поддерживаемые драйвером, такие как WHERE или GROUP.

Преобразование CSV

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

Обратите внимание на следующие полезные параметры форматирования:

/add=<header>=<value | function>[;...]
/addRowNum
/dateFormat=<format>
/dateTimeFormat=<format>
/escapeChar=<char>
/noBOM
/outputCodepage=<codepage>
/outputCulture=<name>
/[outputFormat=]asText | asTxt | asCsv | asHtm | asHtml | asXml | asJson
/[[output]Separator](formatting-options.md#option-outputSeparator)=<separator> | Tab
/quoteChar=<char>
/rowNumBase=<integer>
/timeFormat=<format>

Например, чтобы добавить новые столбцы, такие как "Symbol" и "Date", и преобразовать выходной файл в кодировку UTF-8, используйте следующую команду:

gsqlcmd convert test.csv test-65001.csv /outputEncoding=65001 /add=Symbol=AAPL;Date=Date()

Также вы можете использовать текстовые драйверы Microsoft ODBC и OLE DB для выбора и преобразования данных CSV.

Сначала обновите файл schema.ini с помощью команды make-ini:

gsqlcmd make-ini test.csv schema.ini

Затем используйте команду exec для выборки данных:

gsqlcmd exec test.csv "SELECT 'AAPL' AS Symbol, :date AS [Date], * FROM test.csv" output.csv /set=date=Date()

В таких командах можно использовать функции SQL, поддерживаемые драйвером, такие как WHERE или GROUP.

Этот веб-сайт использует куки. Продолжая использовать веб-сайт, Вы принимаете условия Политики защиты персональных данных.