Страницы: 1
RSS
Максимальная длина SQL для ODBC, Какова максимальная длина SQL запроса в ODBC подключениях к EXCEL
 
Однофорумчане, добрый день ;)

У меня сотрудники ведут несколько файлов (у каждого сотрудника свой файл), я сделал себе сводный файл, который через ODBC подключение SQL запросом транспонирует и объединяет данные со всех файлов.
Всего подключенных файла 4.

Так вот нехитрыми манипуляциями сделал запрос длиной 18 746 символов без пробелов/абзацев и т.д. (а с последними вообще 20 551 символов), т.е. почти по 5000 строк на одного сотрудника.
Все это сохранил в *.odc файл и пользуюсь. Скорость работы на уровне.
Строка подключения:
Код
DBQ=\\Отчеты\Бюджет\БОМ_Семенова.xlsx;
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
DriverId=1046;
MaxBufferSize=2048;
PageTimeout=5;
ReadOnly=1;
И тут стало интересно - а какова максимальная длина SQL запроса?
Ведь с каждым сотрудником запрос будет увеличиваться на 5000 символов...
Как эта система переварит 100000 символов или более?
Изменено: vetrintsev - 22.10.2015 17:01:18
 
Цитата
vetrintsev написал:  т.е. почти по 5000 строк на одного сотрудника.. Скорость работы на уровне.
?
Цитата
vetrintsev написал: Ведь с каждым сотрудником запрос будет увеличиваться на 5000 символов...
тема Очень интересная, но вопрос ТСа сформулирован сумбурно... так и не поняла, что он имеет ввиду - строки результата запроса или длину самой SQL-команды...
поднимаю ветку, чтобы уточнить у тех, кто сталкивался, - есть ли ограничения на Длину SQL-команды в xl (ms query или в макросах) ? и какое? заранее спасибо...
а то имею sql-запрос~5000 длстр... :oops: и думаю, разбираться ли, почему он не работает (точнее в RecordSet попадает 0 RecordCount) ИЛИ он вообще по техническим причинам не заработает никогда?  - из-за его длины?...  
Изменено: JeyCi - 02.03.2017 12:55:43
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Насколько помню, для таких вещей ограничение идет не по кол-ву символов в запросе, а по размеру файла, в котором он записан. Для MySQL допустимо до 4Гб, хотя по умолчанию обычно установлено меньше(кажись около 250 Мб). Да и сложно такой запрос представить.
В общем 100000 символов должно работать на ура, хотя я бы все же ратовал за оптимизацию таких запросов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ограничения SQL команды обычно упирается не в ее длину, а из чего она состоит, т.е. в максимальное количество полей, количество объединений, количество группировок и т.д.
Да, и еще у каждого диалекта языка SQL свои ограничения.
Excel + SQL = Activetables
 
Цитата
The_Prist написал: а по размеру файла, в котором он записан.
однозначно идёт по размеру отведённой для бд памяти, видимо... потому что, если в ходе выполнения запроса, размер данных из подзапросов, например, превышает 2гб (для Access) - предельно возможный размер бд - то выдаст ошибку... ошибка Переполнения
Цитата
PowerBoy написал: упирается ... т.е. в максимальное количество полей, количество объединений, количество группировок и т.д.
видимо, это оно и есть: если более  - то ошибка Переполнения...
то есть допустимость и обрабатываемость SQL-конструкции зависит от того хватит ли памяти на проведение всех подзапросов и вывода итога запроса... (памяти отведённой системой или софтом для работы с бд) ...
PowerBoy речь шла о запросе к 2м файлам xl. ~3000 строк каждая таблицы из 2х - на выходе 20-30 строк... вытягивая только нужное изначально (отсекая ненужное через WHERE и JOIN), потом перекруты для визуально приемлемого вывода и одно простейшее мат. вычисление по каждой из вытянутых строк...  
 p.s.
а теперь самое главное  :) - мой запрос длиной SQL-строки в  4883 символов - Сработал!! - просто поправила его :idea: ...
Цитата
PowerBoy написал: Ограничения SQL команды обычно упирается не в ее длину
Всем спасибо большое за поддержку!  
Изменено: JeyCi - 02.03.2017 15:58:21
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1
Читают тему
Наверх