DatabaseExport

Exporta uma tabela ou resultado sobre a execução da consulta SQL para um arquivo CSV. O arquivo é criado com codificação UTF-8.

long  DatabaseExport(
   int           database,           // identificador de banco de dados recebido em DatabaseOpen
   const string  table_or_sql,       // nome da tabela ou consulta SQL
   const string  filename,           // nome do arquivo CSV para exportação de dados
   uint          flags,              // combinação de sinalizadores
   const string  separator           // separador de dados no arquivo CVS
   );

Parâmetros

database

[in]  Identificador do banco de dados, obtido em DatabaseOpen().

table_or_sql

[in]  Nome da tabela ou o texto da consulta SQL, cujos resultados serão exportados para o arquivo especificado.

filename

[in]  Nome do arquivo para exportar dados. O caminho é definido em relação à pasta MQL5\Files.

flags

[in]  Combinação de sinalizadores que definem a saída para um arquivo. Os sinalizadores são definidos da seguinte maneira:

DATABASE_EXPORT_HEADER                 — exibir uma linha contendo nomes de campos
DATABASE_EXPORT_INDEX                    — exibir o número de linha
DATABASE_EXPORT_NO_BOM                — não inserir o rótulo BOM no início do arquivo (por padrão, é inserido BOM)
DATABASE_EXPORT_CRLF                     — para quebra de linha, usar CRLF (por padrão LF)
DATABASE_EXPORT_APPEND                 — anexar dados ao final do arquivo existente (por padrão, o arquivo é reescrito). Se o arquivo não existir, ele será gerado.
DATABASE_EXPORT_QUOTED_STRINGS — exibir valores de string entre aspas duplas.
DATABASE_EXPORT_COMMON_FOLDER - será gerado um arquivo CVS na pasta compartilhada de terminais do cliente \Terminal\Common\File.

separator

[in]  Separador de dados. Se especificado NULL, como separador será utilizado o símbolo de tabulação '\t'. Linha vazia "" é considerada um delimitador válido, mas o arquivo CSV não pode ser lido como tabela, pois será um conjunto de linhas.

 

Valor retornado

Retorna o número de registros exportados ou um valor negativo em caso de erro. Para obter o código de erro, use GetLastError(), respostas possíveis:

  • ERR_INTERNAL_ERROR (4001)                       — erro crítico de tempo de execução do sistema;
  • ERR_INVALID_PARAMETER (4003)                  — caminho para o arquivo de banco de dados contendo uma string vazia ou definida uma combinação incompatível de sinalizadores;
  • ERR_NOT_ENOUGH_MEMORY (4004)              - memória insuficiente;
  • ERR_FUNCTION_NOT_ALLOWED(4014)           — o canal especificado não é permitido;
  • ERR_PROGRAM_STOPPED(4022)                    — operação cancelada (o programa MQL parou);
  • ERR_WRONG_FILENAME (5002)                     - nome de arquivo inválido;
  • ERR_TOO_LONG_FILENAME (5003)                 - o caminho absoluto para o arquivo excedeu o tamanho máximo;
  • ERR_CANNOT_OPEN_FILE(5004)                    — erro ao abrir o arquivo para gravação;
  • ERR_FILE_WRITEERROR(5026)                      — erro ao gravar no arquivo;
  • ERR_DATABASE_INTERNAL (5120)                 — erro interno do banco de dados;
  • ERR_DATABASE_INVALID_HANDLE (5121)      - identificador de banco de dados inválido;
  • ERR_DATABASE_QUERY_PREPARE(5125)        — erro ao criar a consulta;
  • ERR_DATABASE_QUERY_NOT_READONLY       — somente é permitida uma solicitação de leitura.

 

Observação

Se os resultados da consulta forem exportados, a consulta SQL deverá começar com "SELECT" ou "select". Em outras palavras, a consulta SQL não pode alterar o estado do banco de dados, caso contrário DatabaseExport() falhará.

Os valores de string no banco de dados podem conter um caractere de conversão ('\r' ou '\r\n' ), além de um caractere separador de valores especificado no parâmetro separator. Nesse caso, é necessário usar o sinalizador DATABASE_EXPORT_QUOTED_STRINGS no parâmetro flags. Se esse sinalizador estiver presente, todas as linhas exibidas serão colocadas entre aspas duplas, mas se a linha contiver aspas duplas, ela será substituída por duas aspas duplas.

 

Veja também

DatabasePrint, DatabaseImport