Importar/exportar datos en MySql con LOAD DATA INFILE desde y hacia un fichero externo |
La instrucción de MySql LOAD DATA INFILE nos permite cargar datos desde un archivo externo, básicamente se trata de leer el contenido de un fichero y volcarlo en una tabla. El comando en cuestión tiene la siguiente sintaxis básica: LOAD DATA INFILE 'c:/archivo_datos.txt' INTO TABLE nombre_tabla; Las opciones de las que dispone esta instrucción son numerosas y permiten adaptar el tipo de volcado a nuestras necesidades concretas. Veamos un ejemplo: LOAD DATA INFILE 'c:/archivo_datos.txt' INTO TABLE nombre_tabla FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' En este caso le estamos indicando al motor de base de datos que cargue el archivo considerando que cada campo está separado por el carácter de punto y coma, también que todos los valores le llegaran entrecomillados con comillas dobles (si usamos el modificador OPTIONALLY sólo se entrecomillarán las columnas de texto y fecha), el carácter de escape es la barra invertida y cada salto de línea se indica con \r\n (Importante: Si se ha generado el fichero de texto en un sistema Windows , se tiene que usar LINES TERMINATED BY '\r\n' para leer correctamente el fichero, ya que los programas de Windows típicamente usan dos caracteres como terminadores de línea, de lo contrario bastará el signo de nueva línea '\n'). Otra cuestión a considerar y que puede llegar a producir un verdadero dolor de cabeza es el "conjunto de caracteres" y "collation" de la tabla. Aunque nuestra tabla sea utf-8(CHARACTER SET utf8, COLLATION utf8_general_ci) los acentos y las eñes no se importarán correctamente. Para solucionar este problema debemos indicar CHARACTER SET UTF8 después del nombre de la tabla, y emplear LOCAL como parte del comando si estamos cargando datos desde nuestro propio ordenador. LOAD DATA LOCAL INFILE 'c:/archivo_datos.txt' INTO TABLE nombre_tabla CHARACTER SET UTF8 FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' Del mismo modo podemos realizar la operación contraria, es decir, generar un archivo de texto plano con los datos de una tabla dada. Veamos un ejemplo: SELECT * FROM nombre_tabla INTO OUTFILE 'c:/archivo_datos.txt' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'; De esta manera obtenemos un archivo llamado "archivo_datos.txt" con un registro por línea, cuyos valores de columna se encuentran separados por un punto y coma y los campos con valores de texto y fechas se entrecomillarán. |
miércoles, 29 de julio de 2015
Importar/exportar datos en MySql con LOAD DATA INFILE desde y hacia un fichero externo
lunes, 27 de julio de 2015
Error Code: 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
Error Code: 1175 You are using safe update mode andyou tried to update a table without a WHERE that uses a KEY column |
Te vas a la barra de menu --Edit y sale otra ventana con otra barra de menus ahí le das a -- SQL Queries y deseleccionas el checkbox "Safe Updates" abajo imagen ilustrativa |
domingo, 19 de julio de 2015
Aumentar el tamaño de una base de datos SQL-SERVER
Limitaciones y restricciones | |||
|
|||
SeguridadPermisosNesesitamos el permiso ALTER en la base de datos. |
|||
|
|||
Para aumentar el tamaño de una base de datos
|
|||
|
|||
Para aumentar el tamaño de una base de datos
|
|||
Para obtener más ejemplos, vea Opciones File y Filegroup de ALTER DATABASE (Transact-SQL). | |||
20 comandos MySQL para la administracion de bases de datos
mysqladmin es una utilidad de la linea de comandos que viene incorporada con MySQL Server y es usada por los administradores de bases de datos para realizar algunas tareas basicas como por ejemplo configurar el password del super-usuario (root), cambiarlo, monitorear procesos de MySQL, refrescar privilegios, chqeuqear el estado del servidor, etc.
En este articulo, resumimos algunos comandos para mysqladmin muy utiles, los mismos utilizados en el dia a dia por los administradores de sistemas y bases de datos.
Para poder probar los comandos, es necesario tener instalado el servidor de MySQL.
Si no tenes instalado el servidor de MySQL, en estas entradas se explica como instalrlo (para /Red Hat Enterprise Linux/CENTOS/Fedora)
Link (explicacion en Inlges)
1 - Configurar el password de root
Si hacemos una instalacion de MySQL, veremos que no reuqerira password para conectar, por tanto configuramos uno con el siguiente comando:
# mysqladmin -u root password PASSWORD_ELEGIDO
2 - Cambiar el password de root
Si necesitamos actualizar el password de root en MySQL, entonces ejecutamos el siguiente comando.
Por ejemplo, decimos que el password antiguo es 123456 y lo queremos actualizar a xyz123.
#mysqladmin -u root -p123456 password 'xyz123'
3 - Chequear que el servidor MySQL esta activo
Para constatar esto, ejecutamos lo suiguiente.
# mysqladmin -u root -p ping
Enter password:
mysqld is alive
4 - Chequear que version de MySQL se esta ejecutando
El siguiente comando muestra la version de MySQL que estamos ejecutando.
# mysqladmin -u root -p version
Enter password:
mysqladmin Ver 8.42 Distrib 5.5.28, for Linux on i686
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.5.28
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 7 days 14 min 45 sec
Threads: 2 Questions: 36002 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.059
5 - Como conocer el estado actual del servidor
Ejecutando este comando, nos muestra el estado actual, uptime (tiempo encendido), threads (hilos de procesos), y queries (cantidad de consultas).
# mysqladmin -u root -ptmppassword status
Enter password:
Uptime: 606704 Threads: 2 Questions: 36003 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.059
6 - Chequear el estado de las variables del servidor y sus valores
Para chequear estos datos, ejecutamos lo siguiente.
# mysqladmin -u root -p extended-status
Enter password:
+------------------------------------------+-------------+
| Variable_name | Value |
+------------------------------------------+-------------+
| Aborted_clients | 3 |
| Aborted_connects | 3 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
| Bytes_received | 6400357 |
| Bytes_sent | 2610105 |
| Com_admin_commands | 3 |
| Com_assign_to_keycache | 0 |
| Com_alter_db | 0 |
| Com_alter_db_upgrade | 0 |
| Com_alter_event | 0 |
| Com_alter_function | 0 |
| Com_alter_procedure | 0 |
| Com_alter_server | 0 |
| Com_alter_table | 0 |
| Com_alter_tablespace | 0 |
+------------------------------------------+-------------+
7 - Chequear el estado de todas las variables del servidor MySQL
Para conocer todas las varialbes activas del servidor y sus valores, ejecutamos lo suiguiente.
# mysqladmin -u root -p variables
Enter password:
+---------------------------------------------------+----------------------------------------------+
| Variable_name | Value |
+---------------------------------------------------+----------------------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr |
| big_tables | OFF |
| binlog_cache_size | 32768 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| binlog_stmt_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | latin1_swedish_ci |
+---------------------------------------------------+----------------------------------------------+
8 - Ver todos los procesos que ejecuta el servidor MySQL
El siguiente comando los muestra.
# mysqladmin -u root -p processlist
Enter password:
+-------+---------+-----------------+---------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+---------+-----------------+---------+---------+------+-------+------------------+
| 18001 | rsyslog | localhost:38307 | rsyslog | Sleep | 5590 | | |
| 18020 | root | localhost | | Query | 0 | | show processlist |
+-------+---------+-----------------+---------+---------+------+-------+------------------+
9 - Como crear una base de datos
Para crear una base de datos nueva, ejecutamos.
# mysqladmin -u root -p create databasename
Enter password:
Mostrar las bases de datos creadas (show databases).
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 18027
Server version: 5.5.28 MySQL Community Server (GPL) by Remi
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| databasename |
| mysql |
| test |
+--------------------+
8 rows in set (0.01 sec)
mysql>
10 - Borrar una base de datos existente
Ejecutando el siguiente comando podra ser borrada, antes preguntara confirmacion.
# mysqladmin -u root -p drop databasename
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'databasename' database [y/N] y
Database "databasename" dropped
11 - Recargar/Refrescar los privilegios MySQL
Este comando recarga los privilegios, reabre logs entre otros.
# mysqladmin -u root -p reload;
# mysqladmin -u root -p refresh
12 - Apagar de forma segura el servidor MySQL
Ejecutamos lo suiguiente.
#mysqladmin -u root -p shutdown
Enter password:
Podemos tambien usar los suiguientes comandos.
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start
13 - Algunos comandos utiles para refrescar datos en MySQL
flush-hosts: Refresca toda la informacion del cache que hostea MySQL.
flush-tables: Refresca todas las tablas.
flush-threads: Refresca los hilos de ejecucion.
flush-logs: Refresca todos los logs de informacion.
flush-privileges: Recarga las tablas de privilegios (lo mismo que recargar).
flush-status: Limpia el stado de las variables.
# mysqladmin -u root -p flush-hosts
# mysqladmin -u root -p flush-tables
# mysqladmin -u root -p flush-threads
# mysqladmin -u root -p flush-logs
# mysqladmin -u root -p flush-privileges
# mysqladmin -u root -p flush-status
14 - Matar un proceso cliente dormido
Ejecutando lo siguiente.
# mysqladmin -u root -p processlist
Enter password:
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 5 | root | localhost | | Sleep | 14 | | |
| 8 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
Entonces ejecutamos el siguiente comando.
# mysqladmin -u root -p kill 5
Enter password:
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 12 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
Si se necesita matar varios procesos, entonces le pasamos los ID's separados por comas.
# mysqladmin -u root -p kill 5,10
15 - Ejecutar varios comandos en una sola linea
Para hacerlo, deberian verse de la siguiente manera.
# mysqladmin -u root -p processlist status version
Enter password:
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 8 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
Uptime: 3801 Threads: 1 Questions: 15 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.003
mysqladmin Ver 8.42 Distrib 5.5.28, for Linux on i686
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.5.28
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 1 hour 3 min 21 sec
Threads: 1 Questions: 15 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.003
16 - Conectar a un servidor remoto
Usamos el parametro -h (host) con la direccion IP.
# mysqladmin -h 172.16.25.126 -u root -p
17 - Ejecutar un comando en un servidor remoto
Por ejemplo para ver el estado del mismo.
# mysqladmin -h 172.16.25.126 -u root -p status
18 - Iniciar/parar replica en un servidor remoto
Para iniciar o parar una replica, utilizamos los siguientes comandos.
# mysqladmin -u root -p start-slave
# mysqladmin -u root -p stop-slave
19 - Guardar informacion de debug en los logs
Informacion de memoria, entre otros.
# mysqladmin -u root -p debug
Enter password:
20 - Ver y conocer las opciones de uso de mysqladmin
Informacion sobre mysqladmin, parametros extras.
# mysqladmin --help
lunes, 13 de julio de 2015
BCP Basico
Aca les dejo un tutorial de bcp para SQL-SERVER el cual cumple la misma funcion que el SPOOL de oracle, donde el resultado de nuestras consultas podemos escribirlo en un archivo plano del tipo que sea.
http://sqlfool.com/2008/12/bcp-basics/
jueves, 9 de julio de 2015
SQL SERVER – Duplicar una tabla
SELECT * Into DestinationTableName From SourceTableName Where 1 = 2
SELECT * INTO MyNewTable FROM MyTable