Exportar consulta SQL a un fichero csv

select callrates.id, users.usr, callrates.extension, callrates.destination, callrates.calldate, callrates.duration, callrates.description, callrates.stablishment, callrates.rate INTO OUTFILE '/tmp/export_201603.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM callrates, users WHERE users.id=callrates.user and year(calldate) = 2016 AND month(calldate) = 03;

No hay opción de exportar la cabecera.…

Dump MySQL a través de PHP

Tengo un servidor al que sacarle una copia de la bbdd pero no me deja usar exec y como consecuencia mysqldump… así que un script para hacerlo de otra forma:

backup_tables('localhost','username','password','blog');

/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
	
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	
	//get all of the tables
	if($tables == '*')
	{
		$tables = array();
		$result = mysql_query('SHOW TABLES');
		while($row = mysql_fetch_row($result))
		{
			$tables[] = $row[0];
		}
	}
	else
	{
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
	
	//cycle through
	foreach($tables as $table)
	{
		$result = mysql_query('SELECT * FROM '.$table);
		$num_fields = mysql_num_fields($result);
		
		$return.= 'DROP TABLE '.$table.';';
		$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
		$return.= "\n\n".$row2[1].";\n\n";
		
		for ($i = 0; $i < $num_fields; $i++) 
		{
			while($row = mysql_fetch_row($result))
			{
				$return.= 'INSERT INTO '.$table.' VALUES(';
				for($j=0; $j < $num_fields; $j++) 
				{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = ereg_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j < ($num_fields-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}
	
	//save file
	$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
	fwrite($handle,$return);
	fclose($handle);
}

Te guarda el dump en la raiz del script.

Multiplicar por 1.5 campo en MySQL

Me encuentro que tengo que multiplicar por 1.5 los registros de una tabla MySQL pero tengo 75.000 registros a actualizar… en su momento hice un programa para exportar los datos en formato csv y luego poder importarlos de nuevo… pero es que se me cansa el dedo al tener que hacerlo a mano :P así que he buscado otra forma un poquito mas elegante para hacerlo. Por supuesto necesitas acceso a la base de datos!…

Instalación de Centreon

Centreon es un gestor via web de alertas, graficas y estados de servidor. Su base es un nagios y acepta peticiones nrpe y traps snmp.

Este “pequeño” manual explica los pasos seguidos para instalarlo, ya que me llevó varios días, básicamente por un atasco mental con ndoutils que era preciso generar el ndomod.o pero para la versión estable no funcionaba, así que hemos tirado de la versión que viene en el sistema que curiosamente es la beta. El sistema usado es una debian squeeze 6.0.0.…

mysql: debian-sys-maint

Una de las maquinas me está soltando este error:

/etc/cron.daily/logrotate:
error: error running shared postrotate script for ‘/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log ‘
run-parts: /etc/cron.daily/logrotate exited with return code 1

también veremos que si queremos reiniciar el mysql nos saca este error:

# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld failed!
# /etc/init.d/mysql start
Starting MySQL database server: mysqld already running.
/usr/bin/mysqladmin: connect to server at ‘localhost’ failed
error: ‘Access denied for user ‘debian-sys-maint’@’localhost’ (using password: YES)’…

mysqldump compatible

Cuando estamos generando un mysqldump de una base de datos mysql en una versión específica, es posible que si la importación de este dump se hace en una versión de base de datos distinta a la de origen, esta importación de errores.
Para ello usaremos la opción no documentada –compatible

mysqldump -uroot -p –opt databasename –compatible=mysql323 > dumpfilename…

ADRCI

[purge_adrci.sh]

ADRCI es un programa que sirve para gestionar logs, incidencias, alertas y trazas de aplicaciones de ORACLE, como por ejemplo las bases de datos. Es una herramienta útil para identificar y empaquetar las incidencias que nos puedan dar las bases de daos en algún momento y mandarlas fácilmente a Oracle para analizarlas.

purge_ADRCI.sh es un script que busca cuales son los homes de las bases de datos ORACLE instaladas en nuestro servidor y limpia los ficheros generados, como logs, incidencias, alertas y trazas mas antiguos de x dias (en este script definido en 30 dias).…

Recuperar el password de root de MySQL

Cuantas veces has accedido a un servidor que configuraste hace tiempo y como eres un paranoico con los passwords, pusiste un password al usuario root del MySQL que no recuerdas cual es?
No te rompas mas la cabeza tratando de meter los passwords mas comunes o tratando de hacer ingeneria social sobre tu mismo. Arranca la base de datos en modo seguro y define un nuevo password.

Primero de todo paras el servicio MySQL

# /etc/init.d/mysql stop

Y luego lo arrancas sin que pille los permisos de las tablas

# /usr/bin/mysqld_safe –skip-grant-tables &

Ejecutas el cliente de mysql tal cual

# mysql

y ya tienes una terminal de root del mysql

mysql>

le indicamos de usar la base de datos mysql:

mysql> use mysql;

y para cambiar el password:

mysql> update user set password = password(’nuevo_password’) where user=’root’ and host=’localhost’;

a continuación:

mysql> flush privileges;
mysql> exit;

Ahora pararemos el mysql (que hemos arrancado en un modo raro) y lo volvemos a arrancar para que funcione como es debido:

# /etc/init.d/mysql stop
# /etc/init.d/mysql start

Luego ya puedes acceder a tu preciosa base de datos MySQL con el nuevo password:

# mysql -uroot -pnuevo_password

et voilá!

mysql>