Cuando tenemos archivos de texto, csv y otros que son demasiado pesados, es un martirio intentar abrirlos con un editor, llamese excel, spreed sheet de open offices u otro similar ya que con los miles o millones de registros tardariamos mucho en solo abrirlos ahora ni imaginar en remplazar una palabra, para evitar todo esto buscando en internet y con ayuda de "Beto" me tope con el comando "sed" que es una maravilla.
Vamos al grano:
Para evitar abrir el archivo y tener que editar a mano, desde consola podemos utilizar el comando de la siguiente forma:
alex@alex-dev:/tmp$ sed -e 's/palabra_a_buscar/palabra_remplazo/g' archivo_origen.csv > archivo_final.csv
DE esta forma vemos un ejemplo concreto en el cual cambiaremos la palabra NULL por TEST, cabe señalar que: "alex@alex-dev:/tmp$" es mi terminal NO ES PARTE DEL COMANDO!!!
ahora si veamos el ejemplo:
alex@alex-dev:/tmp$ sed -e 's/NULL/TEST/g' archivo_origen.csv > archivo_final.csv
y de esta forma abremos remplazado todas esas plabras de ese pesado archivo, para concer mas acerca de la sintaxys hay que ver el man del comando y leer un poco acerca de expresiones regulares.
jueves, 27 de enero de 2011
lunes, 6 de septiembre de 2010
Cargar datos desde fixtures con rails.
Para cargar datos que se encuentran en la carpeta, /test/fixtures de nuestros proyecto rails, podemos usar el comando rake que nos permite el manejo de esta tarea.
la sintaxis es la siguiente.
Para cargar todos los fixtures usamos el siguiente comando desde la raiz del proyecto:
Si solo queremos cargar algun fixture en particular usamos el siguiente comando:
Los fixtures pueden estar en formato yml (yaml) o en formato CSV(separado por comas).
la sintaxis es la siguiente.
Para cargar todos los fixtures usamos el siguiente comando desde la raiz del proyecto:
rake db:fixtures:load
Si solo queremos cargar algun fixture en particular usamos el siguiente comando:
rake db:fixtures:load FIXTURES=users,storesLos fixtures pueden estar en formato yml (yaml) o en formato CSV(separado por comas).
Export CSV from psql
Si alguna vez necesitamos obtener el resultado de una consulta SQL usando la terminal psql de postgres, en un formato csv, podemos realizar lo siguiente.
Una vez en la terminal tecleamos \o ruta, ejemplo
psql=# \o /tmp/archivo.csv
Lo anterior indica que el resultado lo hara por medio de un output (\o) y lo colocara en el archivo indicado ( /tmp/archivo.csv).
De esta froma tenemos un archivo csv que podremos editar con cualquier software de hoja de calculo.
Al abrirlo es importante indicarle que el separador no será la coma sino el signo pipe "|", para que respete la separacion de los registros y podamos manejarlo mas facilmente.
Una vez en la terminal tecleamos \o ruta, ejemplo
psql=# \o /tmp/archivo.csv
Lo anterior indica que el resultado lo hara por medio de un output (\o) y lo colocara en el archivo indicado ( /tmp/archivo.csv).
De esta froma tenemos un archivo csv que podremos editar con cualquier software de hoja de calculo.
Al abrirlo es importante indicarle que el separador no será la coma sino el signo pipe "|", para que respete la separacion de los registros y podamos manejarlo mas facilmente.
viernes, 6 de marzo de 2009
Internacionalizacion I18n en Ruby on Rails
I18n antes que nada significa Internacionalizacion, es por eso que inicia con la letra I despues el numero 18 que indica el numero de caracteres y al final la n que es el último caracter de la palabra "Internationalization".
Ruby on Rails originalmente trae soporte para fechas y palabras en ingles.
En un proyecto que estube realizando (un sistema de asistencias), que teniamos que asignar hora de entrada, salida etc... tenia que utilizar oviamente fechas y horas, el problema surgia que en el mostrar (show o index), las fechas siempre me aparecian en formato de E.U.A, es decir Año Mes y Dia, y peor aun, si queria la hora en formato largo me ponia: "February 17, 2009".
La solucion consistio en leer un poco acerca de I18n y aqui la solucion.
1. Lo primero que tuve que hacer fue descargar el archivo de internacionalizacion que necesitaba, en este caso el de español, de la siguiente direccion: "http://github.com/svenfuchs/rails-i18n/tree/e5878d3c661e0b9ad364951c96f1f4f39960a2f1/rails/locale"
2. Despues de descargarlo hay que ubicarlo en la carpeta locales del Framework que se localiza en config/locales/ dentro de esta carpeta seguramente estara el archivo en.yml que es el que trae por default, no importa si tienes ambos, puedes bajar el del pais que requieras.
3. Ahora bien tenemos que hacer que incluya rails este archivo en nuestro proyecto, esto lo hacemos en el archivo environment.rb que se encuentra en: config/environment.rb en este archivo tenemos que poner lo siguiente:
config.i18n.default_locale = :es
Es asi como indicamos que tome los formatos y traducciones que vienen en ese archivo, trata de ponerlo cerca de donde esta una linea similar pero comentada, solo por órden.
4. Ahora tenemos todo listo, en nuestra vista o donde vamos a mostrar el campo tipo fecha tenemos que hacerlo de la siguiente manera:
<%=l @assistance.date %>
Notese que inicia con una l que es la que le indica que "localize" ese atributo, puede incluir tambien el tradicional h que es para que escape automáticamente caracteres raros, sería de la siguiente manera:
<%=h l @assistance.date %>
Ambos mostrarian algo asi:
2009-02-09
Esta fecha parece no ser la correcta, o mas bien no como queremos que la muestre, pues nos gustaría mas que fuera como comunmente la usamos día, mes y año, para eso solo hay que introducirse un poco en el archivo es.yml que agregamos en la carpeta config/localize/es.yml y dentro encontraremos toda la estructura del formateo de fechas y algunas traducciones, para este caso en particular, vayamos a la parte donde dice :date y vamos a ver algo similar a:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%d de %b"
long: "%d de %B de %Y"
pues bien com ahi dice esta parte podemos agragar nuevos formatos de fechas, como vemos toma el default cuando no le indicamos cual queremos que tome, mas adelante veremo como hacer eso, por ahora cambiaremos el que toma por default, como nos dice tambien utiliza el formateo de fechas de Ruby (strftime), entonces tendremos que seguir esa sintaxis para agregar o midificar los formatos (si quieres saber mas a cerca de este formateo puedes ir a la documentacion de Ruby).
Bien, sigamos, cambiaremos la siguiente linea de este archivo:
default: "%Y-%m-%d"
Que es el que toma por default, como vemos priemro colocara el año %Y
posteriormente un guion -
despues el mes %m
seguido otro guion -
por ultimo el dia %d
todo entre comillas.
Es por esto que la fecha que nos muestra es del tipo 2009-02-09, cambiando el default de la siguiente forma:
default: "%d-%m-%Y"
al cambiar el orden ahora nuestras fechas seran 09-02-2009 :D :D :D
Siguiendo con esto, nos peguntaremos, no ps esta chido pero si quiero un formato personal o un formato del tipo: 17 de Febrero de 2009
bien para esto tendremos que acceder a los formatos que se encuentran debajo, en esta seccion
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%d-%m-%Y"
short: "%d de %b"
long: "%d de %B de %Y"
como vemos tenemos el formato long y short pero, ¿como acceder a este u otro que formemos?, es sencillo, en nuestra vista como habiamos visto toma el que es por default, pero si le colocamos :format => :long ó :format => :short
de la siguiente forma:
<%=l @assistance.date, :format => :long %>
Nos mostraria una fecha de este tipo: 17 de Febrero de 2009
Si queremos agregar un formato nuevo podemos agregarlo en el mismo archivo de la siguiente forma:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%d-%m-%Y"
short: "%d de %b"
long: "%d de %B de %Y"
mi_fecha: "México DF a %d de %B de %Y"
ahora de esta forma podemos llamarlo en nuestra vista de la siguiente manera:
<%=l @assistance.date, :format => :mi_fecha %>
Y esto nos mostraria algo asi:
México DF a 17 de Febrero de 2009
Pues bien asi es como Rails nos facilita la vida para el formateo de fechas por medio de internationalization.
Ruby on Rails originalmente trae soporte para fechas y palabras en ingles.
En un proyecto que estube realizando (un sistema de asistencias), que teniamos que asignar hora de entrada, salida etc... tenia que utilizar oviamente fechas y horas, el problema surgia que en el mostrar (show o index), las fechas siempre me aparecian en formato de E.U.A, es decir Año Mes y Dia, y peor aun, si queria la hora en formato largo me ponia: "February 17, 2009".
La solucion consistio en leer un poco acerca de I18n y aqui la solucion.
1. Lo primero que tuve que hacer fue descargar el archivo de internacionalizacion que necesitaba, en este caso el de español, de la siguiente direccion: "http://github.com/svenfuchs/rails-i18n/tree/e5878d3c661e0b9ad364951c96f1f4f39960a2f1/rails/locale"
2. Despues de descargarlo hay que ubicarlo en la carpeta locales del Framework que se localiza en config/locales/ dentro de esta carpeta seguramente estara el archivo en.yml que es el que trae por default, no importa si tienes ambos, puedes bajar el del pais que requieras.
3. Ahora bien tenemos que hacer que incluya rails este archivo en nuestro proyecto, esto lo hacemos en el archivo environment.rb que se encuentra en: config/environment.rb en este archivo tenemos que poner lo siguiente:
config.i18n.default_locale = :es
Es asi como indicamos que tome los formatos y traducciones que vienen en ese archivo, trata de ponerlo cerca de donde esta una linea similar pero comentada, solo por órden.
4. Ahora tenemos todo listo, en nuestra vista o donde vamos a mostrar el campo tipo fecha tenemos que hacerlo de la siguiente manera:
<%=l @assistance.date %>
Notese que inicia con una l que es la que le indica que "localize" ese atributo, puede incluir tambien el tradicional h que es para que escape automáticamente caracteres raros, sería de la siguiente manera:
<%=h l @assistance.date %>
Ambos mostrarian algo asi:
2009-02-09
Esta fecha parece no ser la correcta, o mas bien no como queremos que la muestre, pues nos gustaría mas que fuera como comunmente la usamos día, mes y año, para eso solo hay que introducirse un poco en el archivo es.yml que agregamos en la carpeta config/localize/es.yml y dentro encontraremos toda la estructura del formateo de fechas y algunas traducciones, para este caso en particular, vayamos a la parte donde dice :date y vamos a ver algo similar a:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%Y-%m-%d"
short: "%d de %b"
long: "%d de %B de %Y"
pues bien com ahi dice esta parte podemos agragar nuevos formatos de fechas, como vemos toma el default cuando no le indicamos cual queremos que tome, mas adelante veremo como hacer eso, por ahora cambiaremos el que toma por default, como nos dice tambien utiliza el formateo de fechas de Ruby (strftime), entonces tendremos que seguir esa sintaxis para agregar o midificar los formatos (si quieres saber mas a cerca de este formateo puedes ir a la documentacion de Ruby).
Bien, sigamos, cambiaremos la siguiente linea de este archivo:
default: "%Y-%m-%d"
Que es el que toma por default, como vemos priemro colocara el año %Y
posteriormente un guion -
despues el mes %m
seguido otro guion -
por ultimo el dia %d
todo entre comillas.
Es por esto que la fecha que nos muestra es del tipo 2009-02-09, cambiando el default de la siguiente forma:
default: "%d-%m-%Y"
al cambiar el orden ahora nuestras fechas seran 09-02-2009 :D :D :D
Siguiendo con esto, nos peguntaremos, no ps esta chido pero si quiero un formato personal o un formato del tipo: 17 de Febrero de 2009
bien para esto tendremos que acceder a los formatos que se encuentran debajo, en esta seccion
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%d-%m-%Y"
short: "%d de %b"
long: "%d de %B de %Y"
como vemos tenemos el formato long y short pero, ¿como acceder a este u otro que formemos?, es sencillo, en nuestra vista como habiamos visto toma el que es por default, pero si le colocamos :format => :long ó :format => :short
de la siguiente forma:
<%=l @assistance.date, :format => :long %>
Nos mostraria una fecha de este tipo: 17 de Febrero de 2009
Si queremos agregar un formato nuevo podemos agregarlo en el mismo archivo de la siguiente forma:
date:
formats:
# Use the strftime parameters for formats.
# When no format has been given, it uses default.
# You can provide other formats here if you like!
default: "%d-%m-%Y"
short: "%d de %b"
long: "%d de %B de %Y"
mi_fecha: "México DF a %d de %B de %Y"
ahora de esta forma podemos llamarlo en nuestra vista de la siguiente manera:
<%=l @assistance.date, :format => :mi_fecha %>
Y esto nos mostraria algo asi:
México DF a 17 de Febrero de 2009
Pues bien asi es como Rails nos facilita la vida para el formateo de fechas por medio de internationalization.
Saludos.
:D :D :D
martes, 29 de abril de 2008
En las relaciones uno a muchos, se pasa la PK del lado de uno al de muchos.
Por ejemplo supongamos tenemos las tablas:
Premio
TipoPremio
con los siguientes atributos
Premio
*id
*name
*fecha
TipoPremio
*id
*name
Ahora la lógica es la siguiente, un premio tiene unicamente un tipo de de premio, pero un tipo de premio puede ser usado para varios premios en particular, es decir un premio especifico es de un tipo, otro de otro tipo o del mismo y asi, quedando la relacion de uno a mucho de la forma un Tipo Premio puedes ser para muchos Premios y un Premio solo tiene un tipo de premio, es decir uno a muchos de TipoPremio a Premio.
Las tablas quedarian de la siguiente forma:Premio
*id
*name
*fecha
*TipoPremio_id
TipoPremio
*id
*name
Por ejemplo supongamos tenemos las tablas:
Premio
TipoPremio
con los siguientes atributos
Premio
*id
*name
*fecha
TipoPremio
*id
*name
Ahora la lógica es la siguiente, un premio tiene unicamente un tipo de de premio, pero un tipo de premio puede ser usado para varios premios en particular, es decir un premio especifico es de un tipo, otro de otro tipo o del mismo y asi, quedando la relacion de uno a mucho de la forma un Tipo Premio puedes ser para muchos Premios y un Premio solo tiene un tipo de premio, es decir uno a muchos de TipoPremio a Premio.
Las tablas quedarian de la siguiente forma:Premio
*id
*name
*fecha
*TipoPremio_id
TipoPremio
*id
*name
martes, 15 de enero de 2008
Permitir conexiones remotas en PostgreSql 8.2
Por motivos de seguridad, la configuración por defecto no admite conexiones externas. Para habilitarlas tenemos que editar el fichero /etc/postgresql/8.2/main/postgresql.conf.
$ sudo gedit /etc/postgresql/8.2/main/postgresql.conf
Ahora buscamos las siguientes líneas que se encuentran comentadas:
#listen_addresses = 'localhost'
Y la substituimos por la siguiente línea:
listen_addresses = '*'
Posteriormente buscamos la siguiente línea y le quitamos la marca de comentario:
#password_encryption = on
Y nos debe quedar lo siguiente:
password_encryption = on
Guardamos los cambios y reiniciamos el demonio para que los cambios surjan efecto:
$ sudo /etc/init.d/postgresql-8.2 restart
fuente: http://pintucoperu.wordpress.com/category/linux-ubuntu-administracion/page/3/
$ sudo gedit /etc/postgresql/8.2/main/postgresql.conf
Ahora buscamos las siguientes líneas que se encuentran comentadas:
#listen_addresses = 'localhost'
Y la substituimos por la siguiente línea:
listen_addresses = '*'
Posteriormente buscamos la siguiente línea y le quitamos la marca de comentario:
#password_encryption = on
Y nos debe quedar lo siguiente:
password_encryption = on
Guardamos los cambios y reiniciamos el demonio para que los cambios surjan efecto:
$ sudo /etc/init.d/postgresql-8.2 restart
fuente: http://pintucoperu.wordpress.com/category/linux-ubuntu-administracion/page/3/
martes, 3 de julio de 2007
BASES DE DATOS
ORACLE
Esta considerado como una de las soluciones número uno para la administracion de de datos. Oracle y toda su gama de productos y herramientas están dirigidos tanto a pequeñas y medianas empresas (con un único sevidor fisico) como también a grandes corporaciones con sistemas mainframes. La última version de su base de datos, (hasta hoy) Oracle Database 10g, es la primera base de datos relacional que incorpora la nueva tecnología Grid Computing, la cual permite utilizar un conjnto de computadoras com un recurso unificado; con esto queremos decir que tanto la memoria como la capacidad de procesamiento de cada uno de los equipos se articulan y se pueden manejar como un todo.
Es importante mencionar que Oracle posee un conjunto de soluciones, como Fusion Middleware, Enterprise Manager y e-Business Suite, todas destiandas a empreas, que nos muestran que las utilidades que ofrece Oracle van más alla de la creación y el manejo de simples bases de datos.
Si bien los costos de los productos y herramientas ofrecidos por esta empresa son mayores, en comparación, que los de la competencia, el gran numero de clientes que actualmentes tiene resgistrados nos pone de manifiesto que es una de las herramientas más utilizadas a nivel mundial.
Suscribirse a:
Entradas (Atom)