Herramientas de usuario

Herramientas del sitio


informatica:bases_de_datos:mysql

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:bases_de_datos:mysql [2021/11/15 11:57] – [Importar CSV] tempwininformatica:bases_de_datos:mysql [2022/10/19 16:06] (actual) – [WHERE] tempwin
Línea 122: Línea 122:
 | ''>=''   | Mayor o igual que  | | ''>=''   | Mayor o igual que  |
 | ''%%<=%%''   | Menor o igual que  | | ''%%<=%%''   | Menor o igual que  |
 +| ''LIKE''  | Compara un patrón  |
 +
 +Si vamos a usar LIKE con múltiples valores, es mejor usar el operador ''REGEXP'' y una [[http://www.tutorialspoint.com/mysql/mysql-regexps.htm|expresión regular]]. Por ejemplo:
 +
 +<code mysql>
 +WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
 +</code>
 +
 +Sería:
 +
 +<code mysql>
 +WHERE interests REGEXP 'sports|pub'
 +</code>
 +
 +
  
 ==== GROUP BY ==== ==== GROUP BY ====
Línea 647: Línea 662:
   * ''-h'': nombre de host (o dirección IP) del servidor de base de datos   * ''-h'': nombre de host (o dirección IP) del servidor de base de datos
  
-Hay que tener en cuenta que de la anterior manera, ''mysqldump'' no graba los disparadores ni los procedimientos almacenados. Si queremos que vuelque disparadores, procedimientos almacenados y envetos:+Hay que tener en cuenta que de la anterior manera, ''mysqldump'' no graba los disparadores ni los procedimientos almacenados. Si queremos que vuelque disparadores, procedimientos almacenados y eventos:
  
 <code> <code>
Línea 726: Línea 741:
  
 Solo insertaría los campos que ocupan las columnas 3 y 4. Solo insertaría los campos que ocupan las columnas 3 y 4.
 +
 +==== Insertar null ====
 +
 +Si algún campo del CSV es vacío, podemos indicar que se inserte NULL mediante la función ''NULLIF'':
 +
 +<code mysql>
 +LOAD DATA LOCAL INFILE '/home/pepito/ficheros/database.csv' 
 +INTO TABLE mi_tabla 
 +FIELDS TERMINATED BY ';' 
 +LINES TERMINATED BY '\n' 
 +IGNORE 1 rows 
 +(@col1, @col2, @col3)
 +SET campo1=NULLIF(@col1, ''), campo2=@col2, campo3=NULLIF(@col3);
 +</code>
 +
 +==== Formatear fecha ====
 +
 +Si el dato de fecha viene en un formato distinto al esperado en MySQL (''%Y-%m-%d %H:%i:%s''), lo podemos fomatear con la función ''STR_TO_DATE'':
 +
 +<code mysql>
 +LOAD DATA LOCAL INFILE '/home/pepito/ficheros/database.csv' 
 +INTO TABLE mi_tabla 
 +FIELDS TERMINATED BY ';' 
 +LINES TERMINATED BY '\n' 
 +IGNORE 1 rows 
 +(@col1, @col2, @col3)
 +SET campo1=STR_TO_DATE(@col1, '%d/%m/%Y %H:%i:%s'), campo2=@col2, campo3=@col3;
 +</code>
 ===== Bases de datos de ejemplo ===== ===== Bases de datos de ejemplo =====
  
   * [[https://dev.mysql.com/doc/sakila/en/|Sakila]]: base de datos de alquiler de películas.   * [[https://dev.mysql.com/doc/sakila/en/|Sakila]]: base de datos de alquiler de películas.
 +
 +===== Reparar tablas =====
 +
 +Si tenemos el error "Table is marked as crashed and should be repaired", podemos solucionarlo con el programa ''mysqlcheck'':
 +
 +<code>
 +mysqlcheck -uUSUARIO -p --databases NOMBRE_BASE_DATOS --auto-repair
 +</code>
 +
 +  * ''USUARIO'': usuario con permisos sobre la base de datos
 +  * ''NOMBRE_BASE_DATOS'': base de datos que contiene las tablas corruptas.
 +
 +Se hará una revisión de las tablas de dicha base de datos y se intentará reparar automáticamente.
informatica/bases_de_datos/mysql.1636973853.txt.gz · Última modificación: por tempwin