DatabaseExport

Экспортирует таблицу или результат выполнения SQL-запроса в CSV-файл. Файл создается в кодировке UTF-8.

long  DatabaseExport(
   int           database,           // хендл базы данных, полученный в DatabaseOpen
   const string  table_or_sql,       // имя таблицы или SQL-запрос
   const string  filename,           // имя CSV-файла для экспорта данных
   uint          flags,              // комбинация флагов
   const string  separator           // разделитель данных в CSV-файле
   );

Параметры

database

[in]  Хендл базы данных, который получен в DatabaseOpen().

table_or_sql

[in]  Имя таблицы или текст SQL-запроса, результаты которого будут экспортированы в указанный файл.

filename

[in]  Имя файла для экспорта данных. Путь задается относительно папки MQL5\Files.

flags

[in]  Комбинация флагов, определяющая вывод в файл. Флаги определены следующим образом:

DATABASE_EXPORT_HEADER                 – выводить строку с именами полей
DATABASE_EXPORT_INDEX                    – выводить номера строк
DATABASE_EXPORT_NO_BOM                – не вставлять метку BOM в начале файла (по умолчанию BOM вставляется)
DATABASE_EXPORT_CRLF                     – для переноса строки использовать CRLF (по умолчанию LF)
DATABASE_EXPORT_APPEND                 – дописывать данные в конец существующего файла (по умолчанию файл перезаписывается). Если файл не существует, то он будет создан.
DATABASE_EXPORT_QUOTED_STRINGS – выводить строковые значения в двойных кавычках.
DATABASE_EXPORT_COMMON_FOLDER - CSV-файл будет создан в общей папке всех клиентских терминалов \Terminal\Common\File.

separator

[in]  Разделитель данных. Если указан NULL, то в качестве разделителя будет использоваться символ табуляции '\t'.  Пустая строка "" считается допустимым разделителем, но полученный CSV-файл не может быть прочитан как таблица – это будет набор строк.

 

Возвращаемое значение

Возвращает количество экспортированных записей  или отрицательное значение в случае ошибки. Для получения кода ошибки используйте GetLastError(), возможные ответы:

  • ERR_INTERNAL_ERROR (4001)                       – критическая ошибка исполняющей системы;
  • ERR_INVALID_PARAMETER (4003)                  – путь к файлу базы содержит пустую строку или выставлена несовместимая комбинация флагов;
  • ERR_NOT_ENOUGH_MEMORY (4004)              - недостаточно памяти;
  • ERR_FUNCTION_NOT_ALLOWED(4014)           – указанный пайп не разрешён;
  • ERR_PROGRAM_STOPPED(4022)                    – операция отменена (произошла остановка MQL программы);
  • ERR_WRONG_FILENAME (5002)                     - некорректное имя файла;
  • ERR_TOO_LONG_FILENAME (5003)                 - абсолютный путь к файлу превысил максимальную длину;
  • ERR_CANNOT_OPEN_FILE(5004)                    – ошибка открытия файла на запись;
  • ERR_FILE_WRITEERROR(5026)                      – ошибка записи в файл;
  • ERR_DATABASE_INTERNAL (5120)                 – внутренняя ошибка базы данных;
  • ERR_DATABASE_INVALID_HANDLE (5121)      - невалидный хендл базы данных;
  • ERR_DATABASE_QUERY_PREPARE(5125)        – ошибка создания запроса;
  • ERR_DATABASE_QUERY_NOT_READONLY       – разрешен только запрос на чтение.

 

Примечание

Если экспортируются результаты запроса, то SQL-запрос должен начинаться с "SELECT" или "select". Другими словами, SQL-запрос не может изменять состояние базы данных, в противном случае DatabaseExport() завершится ошибкой.

Строковые значения в базе данных могут содержать символ перевода ('\r' или '\r\n' ), а также символ разделителя значений, заданный в параметре separator. В этом случае нужно обязательно использовать флаг DATABASE_EXPORT_QUOTED_STRINGS в параметре flags. При наличии этого флага все выводимые строки будут заключены в двойные кавычки, если же в строке содержится двойная кавычка, то она будет заменена на две двойные кавычки.

 

Смотри также

DatabasePrint, DatabaseImport