lunes, 19 de marzo de 2012

ORA-01481 - Si es texto trátalo como texto.



El siguiente campo TIME_SEND  es un VARCHAR2(20) y guarda hora minutos segundos. Ejemplo: 122040. Ante este tipo de casos siempre aclaro que no es mi letra, osea, algún otro hizo ese campo con ese tipo de datos y yo no lo puedo cambiar así como así.

El punto es que para un reporte en Microstrategy, necesito formatear ese valor que quede: 12:20:40. Para lo cual utilizo esta consulta:

SELECT TO_CHAR(TIME_SEND,'hh:mi:ss') as callTime
FROM Tabla;



Y aparece el error ORA-01481:

ORA-01481: modelo de formato numérico no válido
01481. 00000 -  "invalid number format model"
*Cause:    The user is attempting to either convert a number to a string
           via TO_CHAR or a string to a number via TO_NUMBER and has
           supplied an invalid number format model parameter.
*Action:   Consult your manual.

Para este error mi solución es sencilla. Si es texto trátalo como texto.

SELECT SUBSTR(TIME_SEND,1,2)||':'||SUBSTR(TIME_SEND,3,2)||':'||SUBSTR(TIME_SEND,5,2) AS CALLTIME
FROM Tabla;


Directorio de trabajo en GVIM



Estoy usando GVIM la versión gráfica de VIM en Ubuntu (también la uso en Windows).

El único problema que estaba detectando es que cuando editaba un archivo y quería abrir otro archivo de la misma carpeta del primero en otra pestaña ( :tabnew otroarchivo.ext ) no lo encontraba. Esto porque el directorio de trabajo no era el del archivo.

La solución es sencilla:
:set autochdir

Este comando establece el directorio de trabajo en la carpeta del archivo que esta abierto.

Fuente:
http://adf.ly/6SdRz

lunes, 20 de febrero de 2012

declaración implícita incompatible de la función interna ‘strcpy’




Estaba agregando una funcionalidad a una aplicación C. Entonces en mi maquina Ubuntu, comencé a hacer pruebas. Pero apareció este error (Error que no aparecía en la maquina de desarrollo que tiene Red Hat):

 aviso: declaración implícita incompatible de la función interna ‘strcpy’ [activado por defecto]

la linea de la discordia es esta:

strcpy(fileName, argv[1]);






La solución fue tan sencilla como agregar en el include string.h

Fuente
  http://q.gs/wGkv


viernes, 20 de enero de 2012

Cortar archivos en linux (Unirlos en Windows)

Tenia un archivo de texto de 900 MB, en un servidor Linux. El cual tenia que traer a la maquina Windows que uso en el trabajo,a través de una Wifi compartida por cientos de personas. La Wifi se caía de vez en cuando por lo que perdí varias veces la copia del archivo. ¿La solución? Dividir el archivo en varias partes, tantas que fuera mas factible traspasarla dada la tasa de transferencia de la red. Esta red no tenia salida a Internet.

En Linux use split, que permite dividir archivos y en Windows los uní con type.


split -d -b100m archivo archivo 


d Indica que los archivos serán identificados con números. Por defecto usa letras. 


b Indica el tamaño que deben tener los archivos pueden ser en M (Megabytes) o K (Kilobytes)

En Windows, Inicio -> Ejecutar -> cmd -> Enter -> ir a la carpeta donde estan los archivos y ejecutar:

type archivo1 archivo2 archivon > ArchivoCompleto.txt 


En Linux, tambien puedes unir las partes de un archivo con cat. 


cat archivo1 archivo2 archivon > ArchivoCompleto.txt

miércoles, 18 de enero de 2012

ORA-01843: not a valid month

El mensaje que aparecía en el log, después de ejecutar la shell es el siguiente:
 Record 26: Rejected - Error on table TARIFAS_CARGA, column "INICIO".ORA-01843: not a valid month
¿Cual fue la solución? Agregar formato en el archivo ctl para las fechas con la instrucción to_date, de la siguiente forma:
 Archivo CTL.


load data 
 Append into table PERIODOS 
 fields terminated by ";" optionally enclosed by '"'
 ( PERIODO , 
 INICIO "to_date(:INICIO, 'dd-mm-yy')" , 
 FIN "to_date(:FIN, 'dd-mm-yy')" 
 )

Tal vez sea necesario que conozcas primero el formato para las fechas en tu instalación de Oracle.

 select * from nls_session_parameters; 

En la imagen se encuentra marcada la opción NLS_DATE_FORMAT, esta indica el formato de fecha. RR quiere decir YY (año).



lunes, 16 de enero de 2012

Postear en Blogger desdej el iPhone


EaAaKi

Con este post, van dos que escribo desde el iPhone. Esto con la aplicación Blogger disponible en la App Store, de forma gratuita.

Aunque la uso para crear un borrador, que luego edito desde el notebook. 

Pero es de bastante ayuda , ya que permite capturar alguna idea y subirla al blog sin que se olvide posteriormente.

Como abreviar texto en VI




Probablemente SELECT * FROM es una de las consultas que mas se hace durante el día a día de un desarrollador. Ese es un ejemplo, de textos que llega a ser cansador escribir vez tras vez. Por lo que tener una forma de abreviar tales casos es lo mas eficiente. En VI se pueden abreviar los textos de la siguiente forma:

:ab sel SELECT * FROM

Donde:
sel es la abreviación
SELECT * FROM es el texto a abreviar

Entonces cuando se escribe, el texto abreviado se muestra el texto completo.

En el ejemplo, al escribir sel despliega SELECT * FROM