MQL5参考使用数据库DatabaseExport 

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文件夹的路径。

标识

[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' ),以及分隔符参数中设置的值分隔符。在这种情况下,请确保在'flags'参数中使用DATABASE_EXPORT_QUOTED_STRINGS标识。如果该标识已存在,则所有显示的字符串用双引号表示。如果一个字符串包含双引号,则用双层双引号代替。

 

另见

DatabasePrintDatabaseImport