- Principios de las operaciones de base de datos en MQL5
- Conceptos básicos de SQL
- Estructura de las tablas: tipos de datos y restricciones
- POO (MQL5) e integración SQL: concepto de ORM
- Crear, abrir y cerrar bases de datos
- Ejecutar consultas sin enlace de datos MQL5
- Comprobar si una tabla existe en la base de datos
- Preparar consultas vinculadas: DatabasePrepare
- Borrar y reiniciar consultas preparadas
- Vincular datos a parámetros de consulta: DatabaseBind/Array
- Ejecutar consultas preparadas: DatabaseRead/Bind
- Leer campos por separado: funciones DatabaseColumn
- Ejemplos de operaciones CRUD en SQLite mediante objetos ORM
- Transacciones
- Importar y exportar tablas de bases de datos
- Imprimir tablas y consultas SQL en registros
- Ejemplo de búsqueda de una estrategia de trading mediante SQLite
Importar y exportar tablas de bases de datos
MQL5 permite exportar e importar tablas individuales de bases de datos a/desde archivos CSV. No se proporciona la exportación/importación de la base de datos completa, como un archivo con comandos SQL.
long DatabaseImport(int database, const string table, const string filename, uint flags,
const string separator, ulong skip_rows, const string comment_chars)
La función DatabaseImport importa datos del archivo especificado a la tabla. Los dos primeros parámetros indican el descriptor de la base de datos abierta y el nombre de la tabla.
Si la tabla table no existe, se creará automáticamente. Los nombres y tipos de campos de la tabla se reconocerán automáticamente en función de los datos contenidos en el archivo.
El archivo importado puede ser no sólo un archivo CSV ya preparado, sino también un archivo ZIP con un archivo CSV. El nombre del archivo puede contener una ruta. El archivo se busca en relación con el directorio MQL5/Files.
Los indicadores válidos que pueden combinarse por bits se describen en la enumeración ENUM_DATABASE_IMPORT_FLAGS:
- DATABASE_IMPORT_HEADER - la primera línea contiene los nombres de los campos de la tabla.
- DATABASE_IMPORT_CRLF - para los saltos de línea, se utiliza la secuencia de caracteres CRLF.
- DATABASE_IMPORT_APPEND - añadir datos a una tabla existente
- DATABASE_IMPORT_QUOTED_STRINGS - valores de cadena entre comillas dobles
- DATABASE_IMPORT_COMMON_FOLDER - carpeta común de terminales
El parámetro separator establece el carácter delimitador en el archivo CSV.
El parámetro skip_rows omite el número especificado de líneas iniciales del archivo.
El parámetro comment_chars contiene los caracteres utilizados en el archivo como bandera de comentario. Las líneas que empiecen por cualquiera de estos caracteres se considerarán comentarios y no se importarán.
La función devuelve el número de filas importadas, o -1 en caso de error.
long DatabaseExport(int database, const string table_or_sql, const string filename, uint flags, const string separator)
La función DatabaseExport exporta una tabla o el resultado de una consulta SQL a un archivo CSV. El manejador de la base de datos, así como el nombre de la tabla o el texto de la consulta, se especifican en los dos primeros parámetros.
Si se exportan los resultados de la consulta, la consulta SQL debe empezar por «SELECT» o «select». En otras palabras: una consulta SQL no puede cambiar el estado de la base de datos; de lo contrario, DatabaseExport finalizará con un error.
El nombre filename del archivo puede contener una ruta dentro del directorio MQL5/Files de la instancia actual del terminal o la carpeta compartida de terminales, dependiendo de las banderas.
El parámetro flags permite especificar una combinación de banderas que controla el formato y la ubicación del archivo.
- DATABASE_EXPORT_HEADER - salida de una cadena con nombres de campo
- DATABASE_EXPORT_INDEX - mostrar números de línea
- DATABASE_EXPORT_NO_BOM - no insertar etiqueta BOM al principio del archivo (BOM se inserta por defecto)
- DATABASE_EXPORT_CRLF - usar CRLF para romper una línea (LF por defecto)
- DATABASE_EXPORT_APPEND - añadir datos al final de un archivo existente (por defecto, el archivo se sobrescribe), si el archivo no existe, se creará.
- DATABASE_EXPORT_QUOTED_STRINGS - salida de valores de cadena entre comillas dobles
- DATABASE_EXPORT_COMMON_FOLDER - el archivo CSV se creará en la carpeta común de todos los terminales. MetaQuotes/Terminal/Common/File
El parámetro separator especifica el carácter separador de columnas. Si es NULL, se utilizará el carácter de tabulación '\t' como separador. La cadena vacía «» se considera un delimitador válido, pero el archivo CSV resultante no podrá leerse como una tabla y será un conjunto de filas.
Los campos de texto de la base de datos pueden contener líneas nuevas ('\r' o '\r\n'), así como el carácter delimitador especificado en el parámetro separador. En este caso, es necesario utilizar el indicador DATABASE_EXPORT_QUOTED_STRINGS en el parámetro flags. Si esta bandera está presente, todas las cadenas de salida se encerrarán entre comillas dobles, y si la cadena contiene comillas dobles, se sustituirá por dos comillas dobles.
La función devuelve el número de registros exportados o un valor negativo en caso de error.