miércoles, 29 de julio de 2015

Importar/exportar datos en MySql con LOAD DATA INFILE desde y hacia un fichero externo

Documento sin título

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.

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

Documento sin título

Error Code: 1175 You are using safe update mode and

you 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

o probar directamente la siguiente sentencia
"SET SQL_SAFE_UPDATES=0;"

 
 
 

domingo, 19 de julio de 2015

Aumentar el tamaño de una base de datos SQL-SERVER

Documento sin título
 
       
Limitaciones y restricciones
       
  • No Podemos agregar o quitar un archivo mientras se está ejecutando una instrucción BACKUP.

       

Seguridad

Permisos

Nesesitamos el permiso ALTER en la base de datos.

       

Usar SQL Server Management Studio

       

Para aumentar el tamaño de una base de datos

  1. En el Explorador de objetos, nos conectamos a una instancia del Motor de base de datos de SQL Server y, a continuación, expándala.

  2. Expanda Bases de datos, hacemos clic con el botón secundario en la base de datos cuyo tamaño desee aumentar y, a continuación, haga clic en Propiedades.

  3. En Propiedades de la base de datos, seleccionamos la página Archivos.

  4. Para aumentar el tamaño de un archivo existente, aumentamos el valor de la columna Tamaño inicial (MB) correspondiente al archivo. Debemos aumentar el tamaño de la base datos en 1 megabyte como mínimo.

  5. Para aumentar el tamaño de una base de datos agregando un nuevo archivo, hacemos clic en Agregar y especificamos los valores de dicho archivo. Para obtener más información, vemos Agregar archivos de datos o de registro a una base de datos.

  6. Haga clic en Aceptar.

       

Transact-SQL

       

Para aumentar el tamaño de una base de datos

  1. Conéctamos al Motor de base de datos.

  2. En la barra Estándar, hacemos clic en Nueva consulta.

  3. Copiamos y pegamos el siguiente ejemplo en la ventana de consulta y hacemos clic en EjecutarEste ejemplo aumenta el tamaño del archivo test1dat3.

       
 
       
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

Hola amigos:

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/



Problemas Configuracion OLE SQL SERVER

Documento sin título
           
  Problemas Configuracion OLE SQL SERVER  
           
 

Amigos si ustedes en sql server llegasen a utilizar una funcion de Ole Automation Procedures y les arroja error el transact sql, Diran Que hago?. Amigos es una solucion facil, en otra consola debe ejecuta esta instruccion:


Una vez ejecutada muchos de estos problemas quedan solucionados.

 
   
           
           
           

jueves, 9 de julio de 2015

SQL SERVER – Duplicar una tabla

Para duplicar una tabla, podemos hacer varias cosas, copiar sólo la estructura:
SELECT * Into DestinationTableName From SourceTableName Where 1 = 2
porque puede ser útil para casos X, o bien hacer un duplicado exacto de la misma:
SELECT * INTO MyNewTable FROM MyTable
con la salvedad de que, no se copiarán las constraints o índices.