Contiene información que en algún momento me fue útil en desarrollo de software conceptos Web, ORACLE, Qlikview, linux, Kettle,Extjs, java y bases de datos
domingo, 31 de agosto de 2014
MYSQL :Add llave foranea en mysql
Aquí dejo una guía de como se debe agregar por sql una llave foránea
ALTER TABLE persona MODIFY COLUMN id_usuario INT NOT NULL,
ADD CONSTRAINT fk_per_usu
FOREIGN KEY(id_usuario)
REFERENCES usuario(id);
Como eliminar la restricción
ALTER TABLE PERSONA DROP FOREIGN KEY fk_per_usu;
Etiquetas:
alter table.modify,
foreing key,
llave foranea,
mysql
domingo, 24 de agosto de 2014
Unidad mapeada Windows - Linux
Para crear una unidad mapeada de windows a linux.
1.Crear una carpeta compartida en windows. la carpeta se llamara ruta_carpeta_compratida_windows.
2.Crear una carpeta en linux en la cual sera mapeada la unidad.
Esto se debe hacer preferiblemente como usuario root
mkdir /ruta_linux/mi_ruta
3.Asigne los permisos al usuario que vaya acceder a la carpeta
chown -R user directorio
4.Montamos la unidad mapeada desde la maquina linux.
Ejecutar en linux el siguiente comando
mount -t cifs
//ip_maquina_windows/ruta_carpeta_compratida_windows/ /ruta_linux/mi_ruta -o domain=dominio,username=userwindos,password=clavewindows,uid=500,gid=501
Ejemplo:
mount -t cifs //1.1.1.1/ruta_carpeta_compratida_windows/ /home/miuser/directorio/ -o domain=DOMAIN,username=maryit,password=sanchez,uid=500,gid=501
1.Crear una carpeta compartida en windows. la carpeta se llamara ruta_carpeta_compratida_windows.
2.Crear una carpeta en linux en la cual sera mapeada la unidad.
Esto se debe hacer preferiblemente como usuario root
mkdir /ruta_linux/mi_ruta
3.Asigne los permisos al usuario que vaya acceder a la carpeta
chown -R user directorio
4.Montamos la unidad mapeada desde la maquina linux.
Ejecutar en linux el siguiente comando
mount -t cifs
//ip_maquina_windows/ruta_carpeta_compratida_windows/ /ruta_linux/mi_ruta -o domain=dominio,username=userwindos,password=clavewindows,uid=500,gid=501
Ejemplo:
mount -t cifs //1.1.1.1/ruta_carpeta_compratida_windows/ /home/miuser/directorio/ -o domain=DOMAIN,username=maryit,password=sanchez,uid=500,gid=501
sábado, 23 de agosto de 2014
Qlikview Experiencias: Dato en texto cargado como numero solución TEXT()
Funcion text en script
Hace algún tiempo me tope con la integración de información de la base de datos, con un dato varchar que contenía solo valores numéricos. Y cuando lo cargaba a la herramienta me ocurría que automáticamente cargaba la información como valores integer. Les describo detalladamente lo que me ocurría. y la solución que le di por si les pasa lo mismo.
Tabla en la base de datos
Carga en el modelo de QV(en configuraciones vemos los tipos de cada uno de los campos)
Script de cargue
Producto:
LOAD Codigo,
Descripcion;
SQL SELECT Codigo,
Descripcion
from producto;
Algo que me parecía curioso es que los ceros al inicio solo se los quitaba a algunos de los productos, no se seguía un patrón sobre este, y en ninguna parte estaba especificando este comportamiento.
Para solucionar el problema lo que hice fue especificar en la carga del script que el dato que venia allí era de texto.
Solución:
Producto:
LOAD text(Codigo) as Codigo,
Descripcion;
SQL SELECT Codigo,
Descripcion
from producto;
Hace algún tiempo me tope con la integración de información de la base de datos, con un dato varchar que contenía solo valores numéricos. Y cuando lo cargaba a la herramienta me ocurría que automáticamente cargaba la información como valores integer. Les describo detalladamente lo que me ocurría. y la solución que le di por si les pasa lo mismo.
Tabla en la base de datos
Código | Descripción |
VARCHAR | VARCHAR |
098 | Rexma de papel 500 hojas |
98 | Vasos plasticos 25 unidades |
00045 | Platos plasticos por 100 unidades |
045 | Cubiertos plasticos 25 unidades |
035 | Servilletas 1000 unidades |
80 | Manteles plasticos 1 unidad |
Carga en el modelo de QV(en configuraciones vemos los tipos de cada uno de los campos)
Codigo | Descripcion |
TEXT o INTEGER | TEXT |
98 | Rexma de papel 500 hojas |
98 | Vasos plasticos 25 unidades |
045 | Platos plasticos por 100 unidades |
045 | Cubiertos plasticos 25 unidades |
035 | Servilletas 1000 unidades |
80 | Manteles plasticos 1 unidad |
Script de cargue
Producto:
LOAD Codigo,
Descripcion;
SQL SELECT Codigo,
Descripcion
from producto;
Algo que me parecía curioso es que los ceros al inicio solo se los quitaba a algunos de los productos, no se seguía un patrón sobre este, y en ninguna parte estaba especificando este comportamiento.
Para solucionar el problema lo que hice fue especificar en la carga del script que el dato que venia allí era de texto.
Solución:
Producto:
LOAD text(Codigo) as Codigo,
Descripcion;
SQL SELECT Codigo,
Descripcion
from producto;
Qlikview Experiencias. Objetor contenedor
Objetor contenedor
Un contenedor es un objeto que te permite agrupar múltiples gráficos en uno solo, es como si utilizáramos frames o tabs.
Personalmente no he tenido una buena experiencia con este tipo de objetos, básicamente por que es soportado apartir de la versión 10 ó 11, desde mi punto de vista aun no es un objeto estable.
Hace algún tiempo lo use en configuración modo regilla 1x3(con objetos de tipo tacometro), y el día siguiente luego de que hacia algún filtro solo se actualizaba el primer indicador, los demás parecían desvinculados, les cambie el orden y el comportamiento seguía. Mi solución fue no utilizar este tipo de objeto.
De todos aquí les dejo algunas fotos de los contenedores y sus opciones de configuración:
Contenedor con pestañas de objetos en la derecha
Contenedor con pestañas de objetos en la parte superior
Contenedor con modo rejilla
Selecciona los gráficos previamente creados y pulsa en añadir, también se pueden agregar arrastrándolos con el mouse hacia el contenedor.
Y listo dar clic en aceptar.
Así se vería el contenedor por defecto.
Podemos configurar, si el gráfico es rejilla o objeto único, en caso de ser regilla de cuantas filas x columnas , en caso de ser único la alineación de las pestañas.
Un contenedor es un objeto que te permite agrupar múltiples gráficos en uno solo, es como si utilizáramos frames o tabs.
Personalmente no he tenido una buena experiencia con este tipo de objetos, básicamente por que es soportado apartir de la versión 10 ó 11, desde mi punto de vista aun no es un objeto estable.
Hace algún tiempo lo use en configuración modo regilla 1x3(con objetos de tipo tacometro), y el día siguiente luego de que hacia algún filtro solo se actualizaba el primer indicador, los demás parecían desvinculados, les cambie el orden y el comportamiento seguía. Mi solución fue no utilizar este tipo de objeto.
- Ejemplos
De todos aquí les dejo algunas fotos de los contenedores y sus opciones de configuración:
Contenedor con pestañas de objetos en la derecha
Contenedor con pestañas de objetos en la parte superior
Contenedor con modo rejilla
Contenedor con desplegable en la parte superior
- Creación y Configuración Paso a paso:
Crear nuevo objeto en la hoja, de tipo contenedor.
Y listo dar clic en aceptar.
Podemos configurar, si el gráfico es rejilla o objeto único, en caso de ser regilla de cuantas filas x columnas , en caso de ser único la alineación de las pestañas.
1.Qlikview que es?, De donde descargarla? , Como instalar Qlikview?
¿Que es Qlikview?
Es una herramienta analítica, que te permite construir indicadores de negocio, para la toma de decisiones. se caracteriza por:
En la pagina de los demos de la empresa que hace el software y lo distribuye pueden ver los graficos que soporta la herramienta http://us-d.demo.qlik.com/
Tales como
Como obtener la herramienta paso a paso:
Ingresamos a la pagina http://www.qlik.com/ ubicamos en la esquina superior derecha la opción de FREE DOWNLOAD
Listo ya hemos terminado la instalación, en la carpeta de la instalación quedan dos carpetas bien interesantes una con ejemplos de aplicaciones demo realizadas en qlikview y los temas(estos temas se puede utilizar para darle una vista agradable a nuestras aplicaciones con conjuntos de colores y fondos)
Es una herramienta analítica, que te permite construir indicadores de negocio, para la toma de decisiones. se caracteriza por:
- Interfaz amigable
- Herramienta usable
- Rapidez al consultar
- Es fácil de aprender
- Es colaborativa
- Se integra con múltiples fuentes(csv, texto, excel, xml, bases de datos ,Erp's)
- Tiene una versión free y una paga (mas adelante les explicare esto)
- Maneja un modelo de datos en memoria lo que la hace super rápida
En la pagina de los demos de la empresa que hace el software y lo distribuye pueden ver los graficos que soporta la herramienta http://us-d.demo.qlik.com/
Tales como
- Tabla simple
- Tabla pivote
- Gráfico de barras
- Gráfico de lineas
- Gráfico meko
- Gráfico de disperción
- Gráfico de torta
- Gráfico de embudo
- Gráfico multidimensional en telaraña
- Acelerometros, tacometros
- Integración con google Maps
- Filtros dinámicos de la información
Como obtener la herramienta paso a paso:
Ingresamos a la pagina http://www.qlik.com/ ubicamos en la esquina superior derecha la opción de FREE DOWNLOAD
Una
vez estés allí lo pinchas y te lleva una pagina donde pide completar
unos datos básicos, los completas y descargas la herramienta desktop.
Luego
escojes que versión vas a descargar de acuerdo a las características de
tu maquina física, aceptas los términos y descargas el aplicativo.
2.Instalación de la herramienta
Una vez que descargamos el aplicativo lo único que se debe hacer es ejecutar siguiente ....
veamos las fotos:
Listo ya hemos terminado la instalación, en la carpeta de la instalación quedan dos carpetas bien interesantes una con ejemplos de aplicaciones demo realizadas en qlikview y los temas(estos temas se puede utilizar para darle una vista agradable a nuestras aplicaciones con conjuntos de colores y fondos)
Etiquetas:
bi,
descargar,
instalar,
paso a paso,
qlikview
miércoles, 20 de agosto de 2014
HEROKU:Publicar una web gratis en linea
Entre
a la pagina y descarge el heroku cliente segun su S.O.
Configuraciín
de git
@prueba(master)$ ssh-keygen
-t rsa -C "usuariocuentagit@correo.com"
@prueba(master)$
git config --global user.name "maryitsv@gmail.com"
@prueba(master)$ git
config --global user.email "maryitsv@gmail.com"
Crear
carpeta del proyecto
@prueba2$ git
init
Initialized
empty Git repository in d:/pueba2/.git/
@prueba2 (master)$
git add .
@prueba2 (master)$
git status
#
On branch master
#
Initial commit
#
Changes to be committed:
#
(use "git rm --cached ..." to unstage)
#
new file: index.php
@prueba2 (master)$ git
commit -m "comentario"
[master
(root-commit) ee3e157] fi6
1
file changed, 4 insertions(+)
create
mode 100644 index.php
(Si el proyecto es de symfony podriamos utilizar la siguiente linea
@prueba2 (master)$ heroku create miproyecto
--buildpack https://github.com/CHH/heroku- buildpack-php
)
@prueba2 (master)$
heroku create
Creating
quiet-mesa-4782... done, stack is cedar
http://quiet-mesa-4782.herokuapp.com/
| git@heroku.com:quiet-mesa-4782.git
Git
remote heroku added
@prueba2 (master)$
git push heroku master
Warning:
Permanently added the RSA host key for IP address '50.19.85.156' to
the
list
of known hosts.
Permission
denied (publickey).
fatal:
Could not read from remote repository.
Please
make sure you have the correct access rights
and
the repository exists.
@$ cd
/C/Users/gaea/.ssh/
(Agregar
keys)
@~/.ssh$
heroku
keys:add id_rsa.pub
Uploading
SSH public key id_rsa.pub... done
@~/.ssh$
heroku keys:add
Found
existing public key: C:/Users/gaea/.ssh/id_rsa.pub
Uploading
SSH public key C:/Users/gaea/.ssh/id_rsa.pub... done
@~/.ssh$
cd /d/pueba2/
@ /d/prueba2 (master)$ git
push heroku master
Warning:
Permanently added the RSA host key for IP address '50.19.85.132' to
the
list
of known hosts.
......................................................................................................
----->
Discovering process types
Procfile
declares types -> web
----->
Compressing... done, 62.7MB
----->
Launching... done, v3
To
git@heroku.com:quiet-mesa-4782.git
*
[new branch] master -> master
@prueba2 (master)$ heroku
open
Opening
quiet-mesa-4782... done
@pueba2 (master)$
ORACLE:Cambiar tamaño de tablespace
Si alguna vez necesitan aumentar el tamaño original de un tablespace y asea porque el tamaño actual se esta agotando o por que se va a realizar una carga importante de datos, lo que se debe hacer es lo siguiente: se loguean por sqlplus a la base de datos y ejecutan el siguiente comando
ALTER DATABASE DATAFILE 'Ruta.DBF' RESIZE tamaño;
Ejemplo:
ALTER DATABASE DATAFILE 'C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF' RESIZE 6000M;
ALTER DATABASE DATAFILE 'Ruta.DBF' RESIZE tamaño;
Ejemplo:
ALTER DATABASE DATAFILE 'C:\ORACLEXE\ORADATA\XE\SYSTEM.DBF' RESIZE 6000M;
ORACLE: TNS no hay listener
En algunas ocasiones ante un reinicio de un servidor o una caída de la base de datos nos aparece un error "TNS no listener" cuando nos pase esto debemos levantar el listener de la base de datos de la siguiente manera:
Entramos a la maquina ya sea por vnc o por ssh y digitamos en una consola:
$ lsnrctl start
$ sqlplus /nolog
$ conn / as sysdba
$ startup
Volver a intentar conectarnos a la base de datos, con el listener arriba no deberíamos tener inconvenientes.
Entramos a la maquina ya sea por vnc o por ssh y digitamos en una consola:
$ lsnrctl start
$ sqlplus /nolog
$ conn / as sysdba
$ startup
Volver a intentar conectarnos a la base de datos, con el listener arriba no deberíamos tener inconvenientes.
ORACLE: DBA_SOURCE
Aveces necesitamos saber que funciones o paquetes están haciendo inserts, update sobre una tabla o necesitamos saber quien utiliza una función de la base de datos.
Para esto podemos hacer uso del siguiente comando:
select * from dba_source where text like '%mi_paquete%' ;
select * from dba_source where text like '%insert%tabla%';
hay que tener en cuenta que los signos % se utilizan como comodines que equivalen a uno o mas caracteres, y el signo _ equivale específicamente a un carácter.
ORACLE:Errores mientras trabajo con owb
- Cuenta bloqueada
Error: ORA-28000: the account is locked
SQL> alter user nombre_usuario account unlock;
- Password invalido
Nos paso una ocasión en la que la clave de la base de datos iniciaba con un numero, el error a la hora de registrar la localización era
Error: invalid password
SQL> alter user usuario identified by nuevo_password;
- El proceso fallaba cuando lo lanzaba un usuario por sqlplus RPE-02018
RPE-02018 and ORA-01017: invalid username/password; logon denied
Para solucionar esto ubique la localización y valide de nuevo usuario y la clave, luego realice un deploy con reemplazo de los flujos y luego probe ejecutando uno desde el control center manager. Y listo desplego sin problemas.
me apoye en el siguiente link https://community.oracle.com/message/1476441.
ORACLE: optimización de consultas basico
Utilización de campos específicos en lugar del *
Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta no debería utilizar el * ya que la base de datos va y busca las columnas definidas de la tabla(y esto por pequeño que sea toma tiempo) en estos casos puedes hacer algo así:
select count(1) from usuario ; --bien el 1 representa el primer campo de la tabla
ó
select count(campo) from usuario ; --bien
y no usar
select count(*) from usuario ; --mal
En conclusión el tiempo que se toma en ejecutar el segundo query es menor el que se toma si el query tiene el count(*).
En algunas ocasiones no especificamos en nuestro código que campos específicamente vamos a utilizar de una tabla y utilizamos el *,pues cuando utilizamos el * y vamos a utilizar la mitad de los campos lo que sucede es que ocupamos mas recursos de la base de datos e incluso ocupamos mas red para llevar los datos al sistema que ejecuto la consulta.
Select campo1, campo2,campo2 from tabla; --bien
select * from tabla ; -- mal
- Count(*)
Cuando haces una consulta con un count(*) solo para ver cuantos registros tiene una consulta no debería utilizar el * ya que la base de datos va y busca las columnas definidas de la tabla(y esto por pequeño que sea toma tiempo) en estos casos puedes hacer algo así:
select count(1) from usuario ; --bien el 1 representa el primer campo de la tabla
ó
select count(campo) from usuario ; --bien
y no usar
select count(*) from usuario ; --mal
En conclusión el tiempo que se toma en ejecutar el segundo query es menor el que se toma si el query tiene el count(*).
- Select *
En algunas ocasiones no especificamos en nuestro código que campos específicamente vamos a utilizar de una tabla y utilizamos el *,pues cuando utilizamos el * y vamos a utilizar la mitad de los campos lo que sucede es que ocupamos mas recursos de la base de datos e incluso ocupamos mas red para llevar los datos al sistema que ejecuto la consulta.
Select campo1, campo2,campo2 from tabla; --bien
select * from tabla ; -- mal
ORACLE: Uso de la utilidad Spool
Existe una utilidad de oracle llamada "spool" para guardar todo lo que digitamos y los resultados de las consultas cuando utilizamos la consola con sqlplus.
Es util cuando debes guardar el resultado de una consulta con muchos registros o cuando requieres guardar una seria de evidencias de ejecución. Pasos:
Caso practico A: guardamos una secuencia de lineas ejecutadas.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar o la carpeta en la que vamos a almacenar la salida del archivo spool.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
sql> select 1+1 from dual;
sql> spool nombre_archivo_salida.txt
sql> select 2+4 from dual;
sql> select 2+5 from dual;
sql>spool off;
sql>quit;
3.Una vez paramos la escritura del archivo spool con el comando spool off y cerramos la conexión validamos que en nuestro directorio este el archivo de salida
mvs$ ls
mvs$nombre_archivo_salida.txt
Caso practico B: guardamos el resultado de una consulta especifica.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Preparamos la consola para que nos formatee la salida de la ejecución de una consulta que tenemos almacenado en un archivo, es decir le quitamos los espacio es vacíos al inicio y al final de cada linea de la salida, le quitamos la paginación , le ponemos un tamaño de linea bien grande para que no se nos corte a la siguiente linea una misma fila etc:
sql>SET SPACE 0;
sql>SET LINESIZE 32767;
sql>SET PAGESIZE 0;
sql>SET HEADING OFF;
sql>SET FEEDBACK OFF;
sql>SET TRIMSPOOL ON;
sql> spool nombre_archivo_salida.txt
3.Una vez hemos preparado el ambiente para la ejecucion del archivo ejecutamos el archivo con el siguiente comando
sql> @archivo_con_queys.txt
Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
4.Cuando finalice de ejecutar las sentencias que tenemos en el archivo cerramos el spool y la conexion a la base de datos
sql>spool off;
sql>quit;
5.Al finalizar podemos ver el resultado de la consulta nuestra computadora.
mvs$ ls
mvs$nombre_archivo_salida.txt
NOTAS:
En el archivo que llamo archivo_con_querys pueden haber varias sentencias delete, update, select, insert, se utiliza el carácter @ para ejecución de archivos.
Es util cuando debes guardar el resultado de una consulta con muchos registros o cuando requieres guardar una seria de evidencias de ejecución. Pasos:
Caso practico A: guardamos una secuencia de lineas ejecutadas.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar o la carpeta en la que vamos a almacenar la salida del archivo spool.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
sql> select 1+1 from dual;
sql> spool nombre_archivo_salida.txt
sql> select 2+4 from dual;
sql> select 2+5 from dual;
sql>spool off;
sql>quit;
3.Una vez paramos la escritura del archivo spool con el comando spool off y cerramos la conexión validamos que en nuestro directorio este el archivo de salida
mvs$ ls
mvs$nombre_archivo_salida.txt
Caso practico B: guardamos el resultado de una consulta especifica.
0.Nos ubicamos en la carpeta en la que tenemos los querys que vamos a ejecutar.
mvs$ cd mi_dir/
1.Para utilizar el comando, entramos en una consola y nos conectamos a la base de datos:
mvs$ sqlplus esquema_base_de_datos/clave_de_esquema@sid
2.Preparamos la consola para que nos formatee la salida de la ejecución de una consulta que tenemos almacenado en un archivo, es decir le quitamos los espacio es vacíos al inicio y al final de cada linea de la salida, le quitamos la paginación , le ponemos un tamaño de linea bien grande para que no se nos corte a la siguiente linea una misma fila etc:
sql>SET SPACE 0;
sql>SET LINESIZE 32767;
sql>SET PAGESIZE 0;
sql>SET HEADING OFF;
sql>SET FEEDBACK OFF;
sql>SET TRIMSPOOL ON;
sql> spool nombre_archivo_salida.txt
3.Una vez hemos preparado el ambiente para la ejecucion del archivo ejecutamos el archivo con el siguiente comando
sql> @archivo_con_queys.txt
Una vez entremos a la base de datos digitamos el nombre de la utilidad, se debe tener en cuenta que se guarda en el archivo a partir del momento en que se prenda el spool lo anterior no queda guardado
4.Cuando finalice de ejecutar las sentencias que tenemos en el archivo cerramos el spool y la conexion a la base de datos
sql>spool off;
sql>quit;
5.Al finalizar podemos ver el resultado de la consulta nuestra computadora.
mvs$ ls
mvs$nombre_archivo_salida.txt
NOTAS:
En el archivo que llamo archivo_con_querys pueden haber varias sentencias delete, update, select, insert, se utiliza el carácter @ para ejecución de archivos.
Suscribirse a:
Entradas (Atom)