Показать сообщение отдельно
Старый 03.02.2014, 10:06  
NameSpace
 
Регистрация: 21.12.2012
Сообщений: 146
Репутация: 52
По умолчанию

Volod, Вероятно вы не совсем правильно используете substring(). Первый параметр - строка, второй - позиция, третий - длина.

Например, для чтения файла по 64 символа будут требоваться запросы:
Код:
SELECT mid(load_file('/etc/passwd'), 1, 64);
SELECT mid(load_file('/etc/passwd'), 1 + 64, 64);
SELECT mid(load_file('/etc/passwd'), 1 + 64 * 2, 64);
SELECT mid(load_file('/etc/passwd'), 1 + 64 * 3, 64);
...
Изменяется только второй параметр, к нему идет добавление 64.

Если надо получить кол-во символов в файле или кол-во строк, нужно обрабатывать MySQL-средствами содержимое. Пример:

Код:
SELECT length(load_file('/etc/passwd')); // Размер файла
SELECT length(replace(@:=load_file('/etc/passwd'),0x0A,11))-length(@); // Кол-во строк
SELECT length(replace(@:=load_file('/etc/passwd'),'%0A',@))/length(@); // Вариант на 2 символа короче
...
Последние варианты немного костыльные - стандартной функции для поиска количества вхождений нет.

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

Для ускорения процесса эксплуатации среднестатистической error-based сейчас применяют два не легких способа:
  • Изменение кодирвки, например с 8-ми до 5-ти бит на символ
  • Использование вариации error-based векторов, например варианта с name_const и group by одновременно, чередуя их в зависимости от одного из битов.

Последний раз редактировалось NameSpace; 03.02.2014 в 10:47..
NameSpace вне форума   Ответить с цитированием