Excel+SQL=
Запись от sqltd1 размещена 25.06.2023 в 08:09
Показов 1736
Комментарии 4
Используя терминологию соц.сетей, я нахожусь "в активном поиске". Доминирование MS на рынке офисного софта подходит к концу и я задаюсь вопросом "что будет после Экселя?". Точнее, как минимизировать издержки при переходе от продуктов MS к альтернативам. Это состояние "активного поиска" привело меня к проекту OfficeToolbox, в котором предлагается автоматизировать офисные процессы с помощью Юпитеровских блокнотов (Python + Jupyter Motebook). В рамках участия в этом проекте у меня появился вопрос - а может быть для некоторых задач не требуется знание Python, а достаточно знания SQL? Как мне кажется, ответ на этот вопрос - ДА. Ниже описывается пробный вариант реализации. Концепция обработчика XLSX-файла с SQL-командами 1) Обработчик должен получать ссылку на XLSX-файл с SQL-командами (и, возможно, данными), обрабатывать и генерировать выходные данные 2) Для преобразования данных из формата электронных таблиц в формат БД (и обратно), используемый SQL-диалект расширяется соответствующими командами (функциями). 3) Последовательность исполняемых SQL-команд должна находиться внутри XLSX-файла (не снаружи в виде отдельного файла). Наиболее простой способ - это разместить команды на отдельном листе. Реализация В виде юпитеровского блокнота. Файл прикреплен к этому сообщению (см. ниже во вложениях) Исходные данные XLSX-файл с листом __sql, на котором должны быть столбцы rel и sql (эти два столбца загружаются и используются). Столбец sql содержит исполняемые sql-команды. Столбец rel содержит имена связей. Если в строке указана связь, то команда не исполняется немедленно, а создается именованный источник данных, к которому можно обращаться по имени в последующих запросах в разделе FROM. Код запроса, которому назначена связь, будет исполняться только тогда, когда произойдет непосредственное обращение. Связи - это внутренняя фича (Relational API) duckdb, который используется в качестве SQL-движка. Детали реализации В качестве SQL-движка используется duckdb c тремя дополнительными функциями: - show(qry) - вывод в консоль блокнота результата исполнения запроса qry. Функция предназначена для вывода при отладке. - read_xlsx(path, sheet, sargs) - чтение листа sheet из XLSX-файла path с сохранением загруженных данных во временной таблице, доступ к которой предоставляется через назначенную связь - write_xlsx(path, sheet, qry, sargs) - запись результата qry в лист sheet в XLSX-файл path через параметр sargs (JSON) передаются дополнительные параметры Во вложении находится файл юпитеровского блокнота и тестовый пример. В примере использовался прайс-лист, загруженный случайным образом из интернета. Я никак не связан с указанным интернет-магазином и, надеюсь, его владельцы не будут иметь претензий за то, что он используется не по назначению, а в демонстрационных целях. Ниже приведен sql-код из этого примера, иллюстрирующий вызов всех дополнительных функций
|
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
-
Разве что в чьих то фантазиях. В реальности же полноценной альтернативы MS Office как не было, так и нет.Запись от Катафалк размещена 25.06.2023 в 08:24 -
Собственно обратный отсчет включен - 1.5 года осталось
https://www.tadviser.ru/index.... 1%80%D0%B5Запись от sqltd1 размещена 25.06.2023 в 14:14 -
Запись от АЕ размещена 08.10.2023 в 22:47 -
AE
Спасибо, что привлекли внимание к этому прискорбному факту.
В связи с низким интересом общественности проект временно приостановлен. (Но нет ничего более постояного, чем временное, увы)
Запись от sqltd1 размещена 09.10.2023 в 15:23