lunes, 26 de mayo de 2014

Querys curiosos para MySQL

Manera de calcular el tamaño de cierta tabla, junto con eso, cantidad de registros, y el tamaño de los datos, del indice.

SELECT table_name, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB",
(round(((data_length + index_length) / 1024 / 1024),2) / (SELECT COUNT(id) FROM nombre_basedatos.nombre_tabla)) as "Avg Row", (SELECT COUNT(id) FROM cbt.asociado) as rows FROM information_schema.TABLES WHERE table_schema = "nombre_basedatos"
and table_name = 'nombre_tabla';


Ver los derechos que tienen los usuarios sobre cierta base de datos:

SELECT grantee, privilege_type, is_grantable
  FROM information_schema.schema_privileges
  WHERE table_schema = 'nombre_basedatos';


Directorio en el que se encuentra nuestra base de datos:
SELECT @@basedir AS 'Directorio base';

Directorio donde se encuentran los datos.
SELECT @@datadir AS 'Directorio datos';

martes, 13 de mayo de 2014

Instalar mongodb

Comenzando con mongodb...

Instalación mongodb.

Descargar la versión de mongodb AQUI.

El archivo que se desempaque, lo hara por lo general a Donwload.

Lo desempacamos:

tar xvf ~/Downloads/mongodb-osx-x86_64-2.6.1.tar.gz

Entramos a la carpeta:
cd mongodb-osx-x86_64-2.6.1/

y listamos lo que se desempaco:
ls -lh

Entre muchas otras cosas, veremos 2 carpetas
mongo -> que es donde se encuentran los comandos ó shells
mongod -> que es donde esta el proceso del servicio del mongo

Nos cambiamos a usuario root (ó admin) y creamos la carpeta 
donde contendremos la base de datos y le otorgamos derechos

mkdir -p/data/db
cbmod 777 /data/db

Nos regresamos a nuestro usuario mortal e iniciaremos el servicio
./mongod

Aquí se finaliza la instalación de mongo, podemos hacer una prueba,
de que nuestro servicio esta levantado...

cd ~/Downloads/mongodb-osx-x86_64-2.6.1/bin/

./mongo

miércoles, 7 de mayo de 2014

Sublime 2.# Plugins


Package Control de Sublime Text 2

Hace un tiempo ya les había platicado sobre el editor (y mas que eso), Sublime Text 2, ahora les traigo un paquete que contiene y que no viene por defecto, Package Control, recomendadisimo..!!

Este es un controlador de paquetes (algo obvio el nombre), con el cual podremos instalar diferentes plugins para otorgarle diferentes utilidades y ayudas a los usuarios al manejar Sublime Text 2... es importante también caso contrario, no cargar de tantos plugins, ya que esto puede ocasionar lentitud, sin embargo hay unos plugins muy útiles.

Instalación de Package Control


  1. Abrimos Sublime Text 2 
  2. View > Show Console
  3. En la caja que aparesera, pegar el siguiente codigo: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation' 
  4. Al final nos pedirá reiniciar Sublime Text.
  5. Una vez reiniciado, veremos en, Preferencias > Package Control.

Para instalar plugins, apartir de aquí, lo podremos hcaer con los comandos Shift + Ctrl + P. Aparecera una caja de texto donde escribiremos "Install Package", presionamos Enter, despues nos aparecera una lista para seleccionar elpaquete que nos interesa.


Algunos recomendados por mi son:
Aligment
FileDiffs
Git

Saludos, y disculpen si tardo en postear, pero a ratos ando por estos lados.



viernes, 21 de marzo de 2014

Actualizar #consecutivo a tabla #MySQL


Para actualizar un consecutivo,

Sin necesidad de realizar un ciclo, podemos actualizar un campo dado, comenzando con su maximo valor y que de ahi continue en consecutivo:

Creamos la tabla

CREATE TABLE tabla_prueba (id integer(4), valor varchar(40));

Insertamos registros a la tabla:
INSERT INTO tabla_prueba (id, valor) values(1,'valor1'),(2,'valor2'),(3,'valor3'),
       (0,'valor4'),(0,'valor5'),(0,'valor5');

Insertamos 3 registros con valor 0 en el campo id.

Actualizaremos esos registros que quedaron en 0, con un consecutivo.

UPDATE tabla_prueba as a, (SELECT @numeroConsecutivo:= (SELECT max(id) FROM tabla_prueba)) as tabla
SET a.id=@numeroConsecutivo:=@numeroConsecutivo+1 WHERE a.id = 0;


Cabe mencionar y como podrán observar que solo seleccione los campos con id = 0 para que se notara, si no, hubiera actualizado todos los registros con consecutivo a partir del 3, ya que era el máximo en su momento.

martes, 25 de febrero de 2014

Ejecutar sublime por consola (MAC)

Por comodidad y si a alguien le es de utilidad...

Desde la consola de MAC, se puede ejecutar Sublimetext esto por una linea de comandos muy sencilla:

subl file_name
Les dejo el link, para que sigan los pasos a seguir para poder realizarlo.. recuerden que una hora de planeación puede ahorrar hasta 5 horas de trabajo.

Sublimetext MAC (OSX)

Saludos a  todos, que tengan excelente día.

Comparar archivos #Linux

Para comparar 2 archivos desde Linuxs o Unix, existe un comando que probablemente ya conozcan, Diff.

La sintaxis es tan sencilla como:

diff archivo1 archivo2 > salida.txt

Pero si queremos hacer la comparación entre archivos de diferentes servidores, sin la necesidad de tener que copiar el archivo a uno u otro servidor:


ssh user@hostserver "cat ~/public_html/index.php" | diff - ~/public_html/index.php > diff.txt

Donde compara el archivo index.php del servidor al que hacemos referencia con el "hostserver", obviamente tendremos que tener acceso al servidor donde se encuentra el archivo foráneo.

Query por consola a Base de Datos

Para ejecutar una consulta que extraiga información de una base de datos(#database) por consola, el resultado mandarlo a un archivo de salida:


En este ejemplo, vamos a obtener la url de una imagen, y concatenando otros string, vamos a generar una salida como "cp /home/user/imagen.pjg /home/user/imagenes/", esto dentro de un archivo llamado, salida.sql

echo "SELECT  concat('cp ', url, '/', file, ' ', url, 'imagenes/'  FROM table_imagenes WHERE LEFT(file,2)='p_';" | mysql -A database_name > salida.sql

La sintaxis seria:

 echo "SELECT  campo  FROM table_name;" | mysql -A database_name > output.sql