Re: [pgsql-es-ayuda] Problema con Postgrres en Consola
+1 El 12 de abril de 2016, 23:29, "Mario Jiménez Carrasco (isccarrasco)" < mario.carra...@gmail.com> escribió: > Lo que personalmente hago es…: > > 1.- Cambiar el pass del usuario de sistema “postgres”… $ sudo passwd > postgres > 2.- Cambiarte al usuario postgres $ su postgres > 3.- Conectarse a la base de datos. $ psql -U postgres > 4. Cambiar el password del usuario “postgres” de la base de datos > postgres# ALTER USER postgres WITH ENCRYPTED PASSWORD ‘mipass’; > > Espero te sirva, y si no es la forma correcta, ojalá alguien nos oriente a > hacerlo de una mejor manera… > > Saludos... > > > > El 12/04/2016, a las 10:21 p.m., Freddy Martinez> escribió: > > Hola a todos… tengo una vm en la nube con ubuntu 14.04 a la cual recien le > acabo de instalar postgres, pero no me puedo conectar porque no tengo > usuario. Yo he instalado postgres pero con el instalador grafico, nunca he > usado el del repositorio. > > Me pueden explicar cómoresolver esto ? > > saludos > > > = > "El tamaño de tus logros depende del tamaño de tus metas." > C++ and Qt Senior Developer > B.S. Computer Science > Buenos Aires, Argentina > > > -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] triger NEW.record.campo
No te entendí. Tu tienes su FUNCON "generica" que mandas llamar con un trigger delcarado por cad tabla (tablaA->trg1, tablaB->trg1, tablaN->trg1). Dentro de tu función en base a TG_TABLE_NAME identifican de donde se mando llamar la función, por lo que con NEW (o DELETE) identificar el REGISTRO a tratar, pero puede ser NEW.campoTablaA.precio o NEw.campoTablaB.precio o NEW.tablaC.descuento. NEW es el campo recien insertado o actualizado, y dependiendo de TG_TABLE_NAME tu saras como llamar el campo El 12 de abril de 2016, 18:32, raul andrez gutierrez alejo < rauland...@gmail.com> escribió: > Hola Lista. > > quiero hacer un tiger genérico para evaluar en varias tablas con el mismo > triger. > > yo realizo un select y obtengo el nombre de varios campos de la tabla > filtrando con TG_TABLE_NAME. > > el resultado lo guardo en un record y necesito evaluar en NEW cada campo. > > si raise notice ' campo % ',campos.column_name; genera como salida > "precio", necesito que obtener el valor de NEW.precio, como seria? > > raise notice ' valor campo % ',NEW.campos.column_name; > > raise notice ' valor campo % ',NEW.(campos.column_name); > > en php es posible este comportamiento con $$variable, en postgres hay algo > similar? > > -- > Raul Andres Gutierrez Alejo > -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Adicionar sábados y domingos del mes en una planilla de asistencia
Te contesto entre lineas 2016-03-31 14:27 GMT-06:00 Linder Poclaba Lazaro: > Buenas tardes lista, intento armar una planillas de asistencia mensual de > personas teniendo una tabla de marcaciones del personal hice una función en > plpgsql para obtener la asistencia, pero no he podido añadir los días > sábados y domingos en la planilla la funcion es la siguiente: > > CREATE OR REPLACE FUNCTION controlasistencia.asistenciamesfuncionario(vmes > integer, vgestion integer, vidbiometrico integer) > RETURNS SETOF record AS > $BODY$ > DECLARE > fila RECORD; marcaciones RECORD; diatexto text; dia integer; fechasabado > date; fechadomingo date; > hora time;finde boolean; > BEGIN > FOR marcaciones in > select * from crosstab('SELECT > biofechahora::date,nivel,to_char(biofechahora, ''HH12:MI:SS'')::time FROM > controlasistencia.biometrico where mes='||vmes||' and anio='||vgestion||' > and codigobiometrico='||vidbiometrico, > 'select 1 union select 2 union select 3 union select 4 union > select 5 union select 6 union select 7 union > select 8 union select 9 union select 10 union select 11 union > select 12 order by 1') as (fecha date,d1 time,d2 time,d3 time,d4 time,d5 > time, > d6 time,d7 time,d8 time,d9 time,d10 time,d11 time,d12 time) > LOOP > SELECT date_part('dow',marcaciones.fecha) into dia; > SELECT CASE WHEN date_part('dow',marcaciones.fecha) = 0 THEN > 'Domingo' > WHEN date_part('dow',marcaciones.fecha) = 1 THEN 'Lunes' > WHEN date_part('dow',marcaciones.fecha) = 2 THEN 'Martes' > WHEN date_part('dow',marcaciones.fecha) = 3 THEN 'Miercoles' > WHEN date_part('dow',marcaciones.fecha) = 4 THEN 'Jueves' > WHEN date_part('dow',marcaciones.fecha) = 5 THEN 'Viernes' > WHEN date_part('dow',marcaciones.fecha) = 6 THEN 'Sabado' END INTO > diatexto; > este tipo de lineas "WHEN date_part('dow',marcaciones.fecha) = 6" deberia ser "when dia=6" usando tu lógica IF dia=5 THEN > select marcaciones.fecha + 1 into fechasabado; > select marcaciones.fecha + 2 into fechadomingo; > select > diatexto,marcaciones.fecha,marcaciones.d1,marcaciones.d2,marcaciones.d3,marcaciones.d4, > > marcaciones.d5,marcaciones.d6,marcaciones.d7,marcaciones.d8,marcaciones.d9,marcaciones.d10, > marcaciones.d11,marcaciones.d12 UNION ALL > select > 'Sábado'::text,fechasabado,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora > UNION ALL > select > 'Domingo'::text,fechadomingo,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora,hora > INTO fila; > raise notice '% fila',fila; > aqui tienes un raise notice, ¿en el log de postgres te aparece? ELSE > SELECT > diatexto,marcaciones.fecha,marcaciones.d1,marcaciones.d2,marcaciones.d3,marcaciones.d4, > > marcaciones.d5,marcaciones.d6,marcaciones.d7,marcaciones.d8,marcaciones.d9,marcaciones.d10, > marcaciones.d11,marcaciones.d12 INTO fila; > END IF; > return next fila; > END LOOP; > RETURN; > END;$BODY$ > LANGUAGE plpgsql VOLATILE > > En la función identifico el día viernes para poder unir con union all los > dias sábados y domingos pero al hacer correr no me funciona > Por curiosidad ¿Para que quieres sabados y domingos si no tienes el campo marcaciones? > Lo que la función obtiene es esto: > > "Lunes";"2016-02-01";"08:26:00";"12:31:00";"02:35:00";"06:34:00";"";"" > "Martes";"2016-02-02";"08:35:00";"12:32:00";"02:33:00";"07:03:00";"";"" > "Miercoles";"2016-02-03";"08:32:00";"12:32:00";"02:33:00";"06:40:00";"";"" > "Jueves";"2016-02-04";"08:38:00";"12:32:00";"02:32:00";"06:45:00";"";"" > "Viernes";"2016-02-05";"08:00:00";"11:32:00";"12:24:00";"05:27:00";"";"" > "Miercoles";"2016-02-10";"08:42:00";"01:18:00";"01:52:00";"07:09:00";"";"" > "Jueves";"2016-02-11";"08:37:00";"12:35:00";"02:34:00";"06:39:00";"";"" > > "Viernes";"2016-02-12";"08:32:00";"12:42:00";"02:33:00";"03:47:00";"05:08:00";"06:49:00" > "Lunes";"2016-02-15";"08:34:00";"12:33:00";"02:33:00";"06:49:00";"";"" > > "Martes";"2016-02-16";"08:40:00";"08:40:00";"12:35:00";"02:34:00";"06:35:00";"" > "Miercoles";"2016-02-17";"08:38:00";"01:00:00";"02:24:00";"06:37:00";"";"" > "Jueves";"2016-02-18";"08:32:00";"12:31:00";"02:34:00";"06:33:00";"";"" > "Viernes";"2016-02-19";"08:34:00";"12:33:00";"02:34:00";"06:37:00";"";"" > "Lunes";"2016-02-22";"08:36:00";"12:31:00";"02:32:00";"06:43:00";"";"" > "Martes";"2016-02-23";"08:35:00";"11:31:00";"02:32:00";"06:50:00";"";"" > "Miercoles";"2016-02-24";"08:33:00";"12:32:00";"02:33:00";"06:55:00";"";"" > "Jueves";"2016-02-25";"08:34:00";"12:34:00";"02:32:00";"06:32:00";"";"" > "Viernes";"2016-02-26";"08:38:00";"12:31:00";"02:34:00";"06:36:00";"";"" > "Lunes";"2016-02-29";"08:39:00";"12:31:00";"02:35:00";"06:34:00";"";"" > > Desde ya gracias por su tiempo y cualquier consejo es bien recibido. > > -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] [OT], Libro-manual sobre plpgsql y otros lenguajes procedurales
jaja La letania de bene gesserit :D Eres el Kwisatz Haderach http://es.wikipedia.org/wiki/Bene_Gesserit#Hacia_el_Kwisatz_Haderach Alvaro? jeje El 16 de marzo de 2015, 10:37, Alvaro Herrera alvhe...@2ndquadrant.com escribió: Javier Lugo Porras escribió: Hola Anthony, este sitio lulu.COM no tiene un link de descargar_? como hago para bajarlo_? sin tener que comprar, ya que dices que es gratis. hay que dar muchos pasos...registrarse, etc... No conocerás la pereza. La pereza mata la mente. La pereza es la pequeña muerte que conduce a la destrucción total. Afrontaré mi pereza. Permitiré que pase sobre mí y a través de mí. Y cuando haya pasado, giraré mi ojo interno para escrutar su camino. Allá donde haya pasado la pereza ya no habrá nada. Sólo estaré yo. -- Álvaro Herrerahttp://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] [pgsql-es-ayuda] Como saber el nombre de la función que actualmente se está ejecutando
Cuando lo usas con un Trigger es posible tener el nombre del mismo. TG_NAME Data type name; variable that contains the name of the trigger actually fired. http://www.postgresql.org/docs/9.1/static/plpgsql-trigger.html El 24 de octubre de 2014, 11:28, Arturo arturomun...@gmail.com escribió: Hola: Después de mucho tiempo escribo en la lista, necesito algo muy simple pero no encuentro nada en la documentación. Hay forma de saber el nombre de la función que se se está ejecutando , dentro del mismo código de la función? algo al estilo de current_database() quisiera hacer algo de este tipo CREATE OR REPLACE FUNCTION man.mi_funcion ( ) RETURNS void AS $body$ BEGIN insert into una_tabla(nombre_f) values(current_function); END; $body$ donde en la tabla una_tabla quedara registrado 'man.mi_funcion' quería evitar colocar directamente el nombre de la función. saludos -- *Arturo Munive* -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] relación a una tabla u a otra tabla
Siempre había hecho ese tipo de condiciones como Jaime. Nunca se me había ocurrido como lo puso Alvaro. Siempre se aprende algo nuevo El 21 de abril de 2014, 8:42, Jaime Casanova ja...@2ndquadrant.comescribió: 2014-04-21 8:03 GMT-05:00 Alvaro Herrera alvhe...@2ndquadrant.com: Jaime Casanova escribió: Finalmente, para asegurarte que este el uno o el otro agregas un constraint check de este modo: CHECK ((codigo_materia IS NOT NULL AND codigo_taller IS NULL) OR (codigo_materia IS NULL AND codigo_taller IS NOT NULL)) creo que puedes decir lo mismo, más breve, CHECK (codigo_materia IS NULL codigo_taller IS NULL) soy famoso por encontrar soluciones largas a problemas simples ;) -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación Phone: +593 4 5107566 Cell: +593 987171157 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] lc_monetary + Peru
Una es iniciarlizar el cluster de postgres donde estan tus bases de datos con http://www.postgresql.org/docs/current/static/app-initdb.html Otra es crear la base con el nuevo locale http://www.postgresql.org/docs/9.0/static/app-createdb.html Porque no es posible cambiar el LOCALE, como se menciona abajo. 22.1.3. Problems If locale support doesn't work according to the explanation above, check that the locale support in your operating system is correctly configured. To check what locales are installed on your system, you can use the command locale -a if your operating system provides it. Check that PostgreSQL is actually using the locale that you think it is. The LC_COLLATE and LC_CTYPE settings are determined when a database is created, __and cannot be changed except by creating a new database__. Other locale settings including LC_MESSAGES and LC_MONETARY are initially determined by the environment the server is started in, but can be changed on-the-fly. You can check the active locale settings using the SHOW command. El 17 de diciembre de 2013, 9:52, Ruben avila galindoruben2...@gmail.comescribió: Hola buenas tardes estoy tratando de cambiar el LC_monetary= en_US.UTF8-8 ya que me esta grabando con Dolares y en mi pais PERU uso S/ ya que esta grabando con $ en mi campo. Saludos, -- Ruben Avila G. Ing.Sistemas Developer y Arquitecto Opensource Cel:997686960 -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] variable que define idle in transaction
Ahora que si quieres arriesgarte a otros posibles errores por forzar el cierre de la transacción, agrega (1) SET AUTOCOMMIT = ON en las opciones del usuario que se conecta a la BD. Pero como dicen, lo mejor es que los programadores cierran la conexión. Esto lleva a otra pregunta ¿con qué programan? porque creo recordar que algunos frameworks u otras herramientas abren las conexiones y activan la transaction (1) http://www.postgresql.org/docs/9.1/static/ecpg-sql-set-autocommit.html El 11 de noviembre de 2013 11:51, Fernando Heviafhe...@gmail.com escribió: Hola José, Perdoname pero el planteo es absurdo. Las transacciones Idle in Transaction se refiere a sesiones donde se inició una transacción y en ese momento dado el usuario o aplicación no está ejecutando nada contra la base. Puede deberse a que la aplicación está a la espera de que complete otra operación (ej: input del usuario, consulta leeenta a otra base, cálculo gigantoide, etc.), pero por lo general denota un ERROR DE PROGRAMACION. Lo normal es buscar los datos requeridos primero, abrir luego la transacción, actualizar la base y cerrar la transacción. Los últimos 3 pasos debieran ocurrir en pocos milisegundos y nunca depender de un input externo que pudiese potencialmente frenar esta secuencia. Si un idle en transaction se extiende por más de algunos breves segundos ya puede ser un potencial problema a observar. En definitiva, la pelota del problema está en cancha de los programadores. Esto trasciende el reiterado conflicto DBA-Programadores. La solución aquí es programar correctamente esa parte de la aplicación y cualquier otra solución por fuera sólo tiene mérito si no tienes acceso al código. Saludos, Fernando. 2013/11/11 Gilberto Castillo gilberto.casti...@etecsa.cu Hola Gilberto, Los desarrolladores viven en una especie de paraiso donde no pueden ser interrumpidos por simples mortales..;-) Por eso debemos resolver el problema de conexiones idle a nivel de Postgre y servidor. Para desarrollar una idea necesitamos saber (si es posible..claro esta) cuál es(son) la(s) variable(s) que determinan que un proceso en el backend pasa a ser idle transaction. Se entiende? Eso es sencillo desde que el aplicativo accede hacer algo en la data, Ver: select * from pg_locks --que esta boqueado SELECT procpid, current_query FROM pg_stat_activity --que operaciones se esta realizando. Ahora si quieres terminar las transacciones pasado cierto tiempo hay variables para ello, pero eso puede provocar mala cara entre esos inmortales :-). Saludos, Gilberto Castillo La Habana, Cuba --- This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at host imx3.etecsa.cu Visit our web-site: http://www.kaspersky.com, http://www.viruslist.com - Enviado a la lista de correo pgsql-es-ayuda ( pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Guardado de archivos y funciones
Creo que seria mejor que en excel/libreoffice configuraras una conexión a la base para que se conecte a la base de datos y jale la información. En excel se llama tabla dinamica creo. El 27 de septiembre de 2013 08:29, anthonyasotolo...@uci.cu escribió: Hola Jorge, no te sirve guardar el archivo en /tmp , una vez necesité hacer algo similar y los guardaba ahi(/tmp), claro se guardaba con los derechos de postgres, pero resolví mi tema :D saludos El 27/09/13 08:26, Jorge Tornero - Listas escribió: CREATE FUNCTION exportax(tabla varchar,filename varchar) RETURNS void AS $BODY$ import pandas as pd import os queryText=('select * from %s' %args[0]) ejecucion = plpy.execute(queryText) tabla=[] for fil in ejecucion: tabla+=[fil] df=pd.DataFrame(tabla) df.to_excel(filename,index=**False,encoding='utf8') os.chmod(filename,0o666) plpy.notice('Se grabaron %s filas en el archivo %s' %(ejecucion.nrows(),filename)) $BODY$ LANGUAGE plpythonu; __**__** __**__ III Escuela Internacional de Invierno en la UCI del 17 al 28 de febrero del 2014. Ver www.uci.cu - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org **) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] existe soporte de cluster como Oracle?
Como dice un dicho aqui en México Mete hilo para sacar hebra, en ese sentido fue la pregunta. La pregunta la hice porque escuche que Oracle tiene algo llamado cluster, pero ni idea de que se referian. Con las respuestas de muchos descubri terminos que desconocia. (Y sigo leyendo para entender bien a que se refieren) Gracias a todos El 5 de septiembre de 2013 21:02, Enrique Herrera Noya enrique.herreran...@gmail.com escribió: estaras pensando en algo así?: nodo1 nodo2 (cluster HA) II V GFS postgresql o piensas en pgpool-II El 05/09/13 17:11, Miguel Beltran R. escribió: Hola lista Postgresql tiene soporte de base de datos en cluster como Orale? No lo necesito pero me surgio la duda. Si existe cuáles han sido sus experiencias? Qué cantidad de datos manejan si se puede saber? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida --- Enrique Herrera Noya Asesorías y Consultorias ITCoop 09-92303151 -- Mis Certificaciones: Red Hat Certified Engineer RHCE Nº100223072 (RH6.0) Red Hat Certified System Administrato RHCSA Nº100223072 (RH6.0) Red Hat Certified Technician (RHCT) Nº605010753835478 (RH5.0) Novell Certified Linux Professional CLP 10 -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] existe soporte de cluster como Oracle?
Hola lista Postgresql tiene soporte de base de datos en cluster como Orale? No lo necesito pero me surgio la duda. Si existe cuáles han sido sus experiencias? Qué cantidad de datos manejan si se puede saber? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Pasar como parametros campo y tabla a SP
Lo que pasa es que pusiste el valor entre comillas dobles y el sistema lo interpreta que asi se llama la columna 02. Me equivoque con lo que te pase antes, el problema de poner muchas comillas simples jeje. Intenta con: qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '', || ce || );'' ; No tengo un postgresql a la mano para probar, pero lo que se busca es que la cadena quede asi: insert into fp ( e_codi,e_raz1) values (02, 'MI PRUEBA 4' ); El 15 de agosto de 2013 09:23, Felipe Araoz Ramosfar...@gmail.comescribió: Si la linea de la consulta la coloco asi; qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '','' || ce || '');'' ; me graba la función, pero la ejecuto: SELECT insert_dos3('fp','e_codi','e_raz1','02','MI PRUEBA 4') Y me sale este nuevo error. ERROR: no existe la columna «02» LINE 1: insert into fp ( e_codi,e_raz1) values (02,MI PRUEBA 4); ^ QUERY: insert into fp ( e_codi,e_raz1) values (02,MI PRUEBA 4); CONTEXT: PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE ** Error ** ERROR: no existe la columna «02» Estado SQL:42703 Contexto:PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE El 15 de agosto de 2013 09:04, Felipe Araoz Ramos far...@gmail.comescribió: Gracias Miguel por responder Ahora al cambiar la función, me sale ahora este error. ERROR: error de sintaxis en o cerca de «||» LINE 12: ...|| '' ( '' || ca || '','' || cb || '') values (' || cd || '... ^ ** Error ** ERROR: error de sintaxis en o cerca de «||» Estado SQL:42601 Caracter: 336 Alguna otra idea. Gracias El 15 de agosto de 2013 00:43, Miguel Beltran R. yourpa...@gmail.comescribió: Claramente dice el error. estas intentando insertar la cadena MI PRUEBA4, pero tu no estas poniendo las comillas simples a los lados dentro de la función prueba qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '',' || ce || ');'' ; El 14 de agosto de 2013 21:05, Felipe Araoz Ramosfar...@gmail.comescribió: Amigos de la lista Estoy tratando de pasar el nombre de la tabla y el n ombre de los campos en un SP, pero tengo problemas al ejecutarlo. CREATE OR REPLACE FUNCTION insert_dos3(character varying, character varying, character varying, text, text) RETURNS void as ' DECLARE qry text; tt alias for $1; ca alias for $2; cb alias for $3; cd alias for $4; ce alias for $5; begin qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '','' || ce || '');'' ; EXECUTE qry; RETURN; END; ' language 'plpgsql'; Ejecuto de esta manera SELECT insert_dos3('fp','e_codi','e_raz1','03','MI PRUEBA4') *El error que me sale es el siguiente;* *ERROR: error de sintaxis en o cerca de «PRUEBA4»* *LINE 1: insert into fp ( e_codi,e_raz1) values (03,MI PRUEBA4);* * ^* *QUERY: insert into fp ( e_codi,e_raz1) values (03,MI PRUEBA4);* *CONTEXT: PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE * * * *** Error *** * * *ERROR: error de sintaxis en o cerca de «PRUEBA4»* *Estado SQL:42601* *Contexto:PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE* Los datos para el regiostro no pasan con comillas, su ayuda Gracias *Felipe * -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- *Felipe Araoz Ramos* RPM #941990605 / 941990605 RPC 992760385 NXT 822*9500 / 998229500 -- *Felipe Araoz Ramos* RPM #941990605 / 941990605 RPC 992760385 NXT 822*9500 / 998229500 -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Consulta de un valor en varios campos
Podrias hacer una vista donde este el UNION. select * from tabla_valores where camp1 in( select val from vista_tabla_ datos ) y la vista es igual a tu in-select Aunque parece que algo en tu diseño no esta bien si tienes que buscar en 4 columnas diferentes ya que se va tardar 4 veces en recorrer la tabla. Y si tienes muchos datos va a tardar mucho. 2013/8/14 Guillermo E. Villanueva guillermo...@gmail.com Se me ocurre: select * from tabla_valores where camp1 in(select val1 from tabla_ datos) or camp1 in(select val2 from tabla_ datos) or ... ... Pero me gusta mas la forma en que lo hiciste con union Guillermo Villanueva -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Pasar como parametros campo y tabla a SP
Claramente dice el error. estas intentando insertar la cadena MI PRUEBA4, pero tu no estas poniendo las comillas simples a los lados dentro de la función prueba qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '',' || ce || ');'' ; El 14 de agosto de 2013 21:05, Felipe Araoz Ramosfar...@gmail.comescribió: Amigos de la lista Estoy tratando de pasar el nombre de la tabla y el n ombre de los campos en un SP, pero tengo problemas al ejecutarlo. CREATE OR REPLACE FUNCTION insert_dos3(character varying, character varying, character varying, text, text) RETURNS void as ' DECLARE qry text; tt alias for $1; ca alias for $2; cb alias for $3; cd alias for $4; ce alias for $5; begin qry := ''insert into '' || tt || '' ( '' || ca || '','' || cb || '') values ('' || cd || '','' || ce || '');'' ; EXECUTE qry; RETURN; END; ' language 'plpgsql'; Ejecuto de esta manera SELECT insert_dos3('fp','e_codi','e_raz1','03','MI PRUEBA4') *El error que me sale es el siguiente;* *ERROR: error de sintaxis en o cerca de «PRUEBA4»* *LINE 1: insert into fp ( e_codi,e_raz1) values (03,MI PRUEBA4);* * ^* *QUERY: insert into fp ( e_codi,e_raz1) values (03,MI PRUEBA4);* *CONTEXT: PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE* * * *** Error *** * * *ERROR: error de sintaxis en o cerca de «PRUEBA4»* *Estado SQL:42601* *Contexto:PL/pgSQL function insert_dos3 line 10 at sentencia EXECUTE* Los datos para el regiostro no pasan con comillas, su ayuda Gracias *Felipe * -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] [pgsql-es-fomento] Imagen de Base de Datos
activa los los de ambos servidores y ve que pasa. quien se conecto y que instrucción realizo El 23 de mayo de 2013 21:33, Jose Manuel Piña T. xjoseman...@gmail.comescribió: Un cordial saludo a la comunidad de Postresql. En la empresa donde laboro me he conseguido con una aplicación que esta trabajando originalmente en un servidor con Debian 4.0, Postgres 8.1, y la Base de Datos con Latín 9, queriendo mejorar un poquito el servicio, se configuró otro servidor de idénticas características con diferente IP, Debian 6.0, Postgres 8.4 pero manteniendo Latín-9, en ambos la base de datos posee el mismo nombre, el caso es que hemos notado que estando los dos servidores encendidos que cualquier modificación realizada en el segundo servidor se refleja en la base de datos del primero o viceversa, es decir, esta aparentemente actuando como un espejo. No soy un experto en Postgres, pero las preguntas son: A que se debe este fenómeno? Es normal? Como puedo solucionarlo? Agradezco cualquier ayuda o comentarios. Gracias José Manuel Piña T. Nota: La información que contiene este correo es confidencial y no debe retransmitirse a personas no autorizadas. Note: The information that contains this mail is confidential and it does not owe re-transmit not authorized persons. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] [pgsql-es-fomento] Imagen de Base de Datos
perdon. activa los logs de ambos servidores a nivel mas detallado El 26 de mayo de 2013 19:21, Miguel Beltran R. yourpa...@gmail.comescribió: activa los los de ambos servidores y ve que pasa. quien se conecto y que instrucción realizo El 23 de mayo de 2013 21:33, Jose Manuel Piña T. xjoseman...@gmail.comescribió: Un cordial saludo a la comunidad de Postresql. En la empresa donde laboro me he conseguido con una aplicación que esta trabajando originalmente en un servidor con Debian 4.0, Postgres 8.1, y la Base de Datos con Latín 9, queriendo mejorar un poquito el servicio, se configuró otro servidor de idénticas características con diferente IP, Debian 6.0, Postgres 8.4 pero manteniendo Latín-9, en ambos la base de datos posee el mismo nombre, el caso es que hemos notado que estando los dos servidores encendidos que cualquier modificación realizada en el segundo servidor se refleja en la base de datos del primero o viceversa, es decir, esta aparentemente actuando como un espejo. No soy un experto en Postgres, pero las preguntas son: A que se debe este fenómeno? Es normal? Como puedo solucionarlo? Agradezco cualquier ayuda o comentarios. Gracias José Manuel Piña T. Nota: La información que contiene este correo es confidencial y no debe retransmitirse a personas no autorizadas. Note: The information that contains this mail is confidential and it does not owe re-transmit not authorized persons. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] BDs y su soporte ANSI
Hola lista, buen inicio de semana ¿Alguien sabe dónde se puede encontrar una comparativa de las intrucciones ANSI y su soporte en los motores de bases de datos postgresql, oracle, mysql, sql server, etc.? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] BDs y su soporte ANSI
La mejor comparativa que encontre esta en wikipedia (1). Pero creo que no voy a encontrar lo que quiero porque los ANSI/ISO (92/1999/2003/2006/2008/2011) son de pago. Preguntando de otra forma ¿qué nivel de cumplimiento tienen cada uno de estos motores conforme a estas normas internacionales? (1) http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems El 20 de mayo de 2013 09:38, Miguel Beltran R. yourpa...@gmail.comescribió: Hola lista, buen inicio de semana ¿Alguien sabe dónde se puede encontrar una comparativa de las intrucciones ANSI y su soporte en los motores de bases de datos postgresql, oracle, mysql, sql server, etc.? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] BDs y su soporte ANSI
#Alvaro La verdad solo estoy buscando porque me llamo atención que en postgresql 9.3 va a soportar LATERAL JOIN (creo que así decía) y como no conocía esa intruscción me puse a ver que hacia, que entedi que puede llamar a una función en un JOIN usando como parametro el valor de la otra tabla del JOIN, y vi que en otros motores tambien se puede pero tiene otra sintaxis. #Jaime Vi lo que comentas, por ejemplo Postresql y Oracle tienen el mismo concepto (o muy similiar) a tablas, esquemas y base de datos que en 1 base tienen varios esquemas y dentro de cada uno sus tablas; pero mysql e ingres (creo) lo hacen diferente, ellos tienen varias bases de datos y dentro tablas sin usar esquemas. No es de mi interes particular pero acabo de ver que Alvaro ahora trabaja en 2ndquadrant (eso dice su correo a mi entender), una perdida muy grande para su anterior empresa (enterprisedb) porque es una persona muy conocida en esta lista y me imagino que debia de jalar muchos clientes. Felicidades a 2ndQuadrant por tener a dos de las personas mas amables, conocedoras de su trabajo y que apoyan sin pedir nada a cambio en esta lista. claro que me refieroa Jaime y Alvaro (aunque estoy seguro que en ocasiones se desesperan jeje). El 20 de mayo de 2013 22:16, Jaime Casanova ja...@2ndquadrant.comescribió: 2013/5/20 Miguel Beltran R. yourpa...@gmail.com: Hola lista, buen inicio de semana ¿Alguien sabe dónde se puede encontrar una comparativa de las intrucciones ANSI y su soporte en los motores de bases de datos postgresql, oracle, mysql, sql server, etc.? Además de lo que menciona Álvaro, las comparativas pueden ser engañosas. Por ejemplo, una comparativa (como la que encontraste en la wikipedia) puede decir que Oracle soporta Outer joins al igual que otros motores pero si soporta Outer joins no se ajusta al estándar en cuanto a la sintaxis. -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte 24x7 y capacitación Phone: +593 4 5107566 Cell: +593 987171157 -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Relacionar tablas cliente y telefono
Nunca se me había ocurrido hacer una consulta dentro de una columna, pero que pasa si regresa mas de 1 registro. habra que probar El 9 de noviembre de 2012 10:58, oscar arocha arocha.os...@gmail.comescribió: Saludos José, te comento que para poder visualizar la informacion de la manera que sedeas debes hacer una serie de subconsultas en en tu sentencia principal algo asi SELECT A.nombre, (SELECT telefono FROM Telefono FROM codigo_lugar = 1 AND codigo_cliente = A.codigo_cliente ) AS casa, (SELECT telefono FROM Telefono FROM codigo_lugar = 2 AND codigo_cliente = A.codigo_cliente ) AS movil, (SELECT telefono FROM Telefono FROM codigo_lugar = 3 AND codigo_cliente = A.codigo_cliente ) AS tbjo FROM cliente A Espero te pueda servir. El 9 de noviembre de 2012 12:13, José Fermín Francisco Ferreras josefermi...@hotmail.com escribió: Buenos días!! Tengo 3 tablas (Cliente , Teléfono y Lugar) En la tabla cliente tengo 2 campos: Codigo_cliente y nombre En la tabla de Telefono tengo 4 campos: codigo,codigo_cliente,telefono, y codigo_lugar. En la tabla de Lugar tengo 2 campos: codigo_lugar,descripcion. En la tabla de cliente tengo los siguientes datos: *codigo_cliente Nombre* 1 Fermin 2 Miguelina En la tabla de Lugar tengo lo siguiente: *Codigo_lugar descripcion* 1 casa 2 movil 3 trabajo En la tabla de telefono tengo lo siguiente: *codigo codigo_cliente telefono codigo_lugar* 11 1234568 1 21 8558544 3 31 8745352 2 42 3645458 3 52 7566414 2 Quisiera visualizar la informacion de la siguiente manera: *Nombre telefono_casa telefono_movil telefono_trabajo* Fermin 1234568 8745352 8558544 Miguelina 7566414 3645458 Se podrá mostrar la información de esta manera?? ing. José Fermín Francisco Ferreras San Francisco de Macorís, Rep. Dom. -- *Ing. Oscar Arocha* CIV: 208.476 Linux User: 556027 tlf: 58-416-4257379 twitter: @ArochaOscar -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] problemas con dblink
2012/9/14 Juan smalltalker.marc...@gmail.com Gente Estoy tratando de implementar un trigger con dblink. pero no logro que se conecte. lo llamativo es que dice ERROR: could not establish connection DETAIL: could not translate host name pero estoy usando el addres asi: select dblink_connect ('hostaddr=192.169.10.22,port=5432,dbname=db,user=postgres,password=postgres' ::text ); pero no funciona, datos: version de postgres 9.1 s.o. redhat. cualquier idea sera agradecida. saludos jmdc Si usas la versión 9.1 tendrias mejor rendimiento con las nuevas funciones de tablas foraneas http://www.postgresql.org/docs/9.1/static/sql-createforeigntable.html http://wiki.postgresql.org/wiki/Foreign_data_wrappers -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Uso system de CPU
El 11 de septiembre de 2012 04:37, Cesar Martin cmart...@gmail.comescribió: Buenas Miguel Angel, A la BBDD le hago un vaccum verbose analyze todos los dias y todos los mensajes son del tipo: *INFO: ABdossierBB: se procesaron 924 de 924 pE1ginas, que contenEDan 74652 filas vigentes y 0 filas no vigentes; 3000 filas en la muestra, 74652 total de filas estimadas* Entiendo que al haber 0 filas no vigentes, no es necesario correr el full vacuum, es correcto? Cuando se bloqueaba, analizamos las consultas del pg_stat_activity, pero eran todas normales. A mi lo que me sigue sin cuadrar, es que cuando postgres ocupa la CPU, el tipo de carga es user, no system... Otra cosa que tambien he comprobado, es que sin estar en el momento critico con todas las cpu al 100%, la BBDD da timeouts a la hora de conectarse a ella, cuando deberia tener conexiones de sobra, ya que tengo un munin2 puesto y en ningun caso las conexiones suben de 200. Un saludo Podría ser que alguna computadora se encienda a cierta hora y te haga conflicto de IP? que el switch este fallando? puede ser problema por otro lado. si el problema es de conexión, prueba hacer una consulta localmente en el servidor. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Comportamiento correcto del not in ?
No se porque lo hace, haria falta que hicieras un explain Pero intenta conesta otra consulta select * from uad.beneficiarios as b where estado_envio = 'n' and tipo_transaccion = 'M' and clave_beneficiario not in ( select clavebeneficiario from nacer.smiafiliados as s where b.*clavebeneficiario = s.**clavebeneficiario* )
Re: [pgsql-es-ayuda] OT - Borrar y cargas datos cada mes
Gracias Gilberto, Lazaro, Alejandro y Alvaro. La tabla no tiene mucha importancia casi siempre, es un respaldo de un sistema WEB que uso para validar datos con el mismo 3ro que me pasa el respaldo. Esto es para que en caso de tener problemas de comunicación yo pueda usar una copia local y despues cuando se restablesca la señal enviarle al 3ro los datos que el debe tener. @Gilberto: la tabla temporal solo me sirve en una sesión y la uso en un web services que maneja varias conexiones. @Lazaro: Entre mes y dos meses, dependiendo cuanto me tarde en llegar el txt Uso pg 8.3.10 @Alejandro: EL problema es que aunque algunos registros sean nuevos y solo esos se inserten, de los anteriores sus datos cambiaron. Ademas creo que el costo de la busqueda es demasiado y es mejor borrar todo e insertarlo directo. @Alvaro: Eso es lo que queria saber, de las desventajas no me importan porque con la automatización lo pienso ejecutar a las 3am cuando nadie usa el sistema. Ademas que rara vez se usa, solo cuando no tengo acceso al web services el 3ro y que si esta actualizado al día. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] OT - Borrar y cargas datos cada mes
Hola lista, perdon por el off-topic Necesito actualizar una tabla cada mes, esta información me la proporciona una entidad externa en un archivo de texto delimitado por pipe ( | ). Quiero automatizar el sistema de subir la información pero tengo duda de que metodo seria mejor. Unos datos importantes antes: -El archivo tiene unos 2,500,000 registros y sigue aumentando. -Aunque en general solo va aumentando la información, tambien existen cambios: si el registro X en la columna A tenia 123 y en la columna B tenia ABC o sea X (123,ABC) , el siguiente mes puede que el registro X cambia la columna B y tenga FG1 X (123, FG1); y el registro Y en la columna A tenga 410 y en la columna B tenga ABC o sea Y (410,ABC) por eso en lugar de buscar las diferencias mejor vuelvo a subir todo. -La tabla en cuestión tiene indice en 2 campos de texto y 1 númerico -No tiene claves foraneas Los metodos que se me ocurren son: 1.- Usar el metodo de importarlo directo como tabla nueva, drop'ear la anterior y renombar la tabla. 2.- A la tabla hacer truncate, drop, recrearla e importar los nuevos datos Respecto al espacio, ¿cómo es mejor para no que vaya creciendo el tamaño en disco? en este momento la tabla me mide 1.5GB que si borro se recupere el espacio Gracias de antemano -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] seguridad, cifrado
El 7 de marzo de 2012 12:08, Fede . elcoto...@gmail.com escribió: hola, los molesto por lo siguiente: * Tengo un postgres en un linux server * tengo cifrado el home con lo cual los archivos con la base de datos estan cifrados * cambie la ruta del pg_hba y lo ubique en home (cifrado) pero se me presenta el siguiente problema si alguien inicia el servidor con un live cd, monta el disco, edita postgres.conf, gerena un pg_hba con trust y luego inicia el servidor pueden entrar con pgadmin desde una terminal y ver y tocar la informacion hay forma de que el postgres.conf se pueda poner en la carpeta cifrada ? gracias federico - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda Desactiva los CD y USB de la maquina, no es broma (bueno un poco) No se que tan importante sea tu información pero si tiene tanto acceso al servidor te deberias pregunar cómo lo hicieron. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] transacciones dentro de una transaccion
El 1 de febrero de 2012 03:07, gorka gl...@cestel.es escribió: ** Buenas.. Digo lo del dblink porque por lo que he visto, si dentro de una funcion tu haces uso de un dblink, se establece una nueva transacción para la consulta que tu ejecutes por medio del dblink, pero me imagino que ese uso del dblink será costoso. Saludos Si todo lo tienes dentro un motor de base de datos con varias bases de datos te convendria pasar todo a UNA SOLA base de datos y separarlas por ESQUEMAS, con eso no necesitarias dblink y creo que prodrias usar sin problemas savepoints para hacer commit
Re: [pgsql-es-ayuda] transacciones dentro de una transaccion
El 31 de enero de 2012 06:41, gorka gl...@cestel.es escribió: Hola: En una aplicación en la que estoy participando estamos haciendo inserciones masivas de operaciones de clientes ejecutando un procedimiento almacenado que recorre una tabla, y para cada fila de esa tabla recorre otras, con el fin de insertar o actualizar en las tablas definitivas, que están en otro esquema, que es en el que funciona la aplicacion web. Pues bien, resulta que como ese proceso de recorrer varias tablas y actualizar o insertar en el esquema de trabajo es bastante complejo, y además en casos de clientes especiales, hay muchos registros de operaciones y la transacción de incorporación a tablas de trabajo se demora bastante en el tiempo, la aplicación web empieza a escribir en las mismas tablas de trabajo, y se producen bloqueos. Como solución a esto, nos proponen que cada paso del bucle, es decir, cada manejo de una operación sea una transacción, vamos, que quieren que se haga un commit dentro del procedimiento, pero evidentemente eso no se puede hacer. Sabeis si hay alguna solución a este problema, aparte de hacer uso de dblink, como he visto por ahi?? La solución de incorporar datos cuando no se esté trabajando con la aplicación no existe, porque los ficheros de los clientes hay que incorporarlos al sistema en cuanto llegan, y no depende de nosotros. Muchas gracias y saludos - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org **) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda ¿Todo esta en el mismo motor de base de datos pero en diferentes esquemas? ¿O porque mencionas dblink? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] uptime
Parece que no, pero puesdes saber su tiempo en linux con ps http://singztechmusings.wordpress.com/2011/06/15/how-to-check-the-uptime-of-a-process-or-an-application-running-in-linux-machine-using-shell-script/ Ejemplo # Get ActiveMQ PID activemq_pid=`ps ax | grep apache-activemq | grep -v grep | awk ‘{print $1}’` echo $activemq_pid # Get ActiveMQ Uptime activemq_uptime=`ps -p Otra que se me acaba de ocurrir es más tosca, que es con grep revisar el log de postgres mostrando solo las lines con marca el inicio de postgres, tienes que ver cual es el texto. El 25 de enero de 2012 14:38, Fede . elcoto...@gmail.com escribió: hola, existe algun comando como uptime de linux para postgres ? gracias federico - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Comprar Bases de datos
El 24 de noviembre de 2011 15:25, wrbut...@rizoma.cl escribió: Hola ta todos! me encuentro planificando una migración de un sistema que, en muy corto tiempo, ha sufrido varias modificaciones en la estructura de su base de datos (algunas tablas nuevas y otras modificadas), para ello estoy en la labor de generar un script que haga el trabajo, sin embargo, para poder desarrollarlo me hace falta ver las diferencias en la estructura de ambas bases de datos. Conoce alguien, alguna forma de comparar el esquema de 2 bases de datos y mostrar las diferencias que hay en sus tablas (y respectivos campos)? Muchas gracias! - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda Puedes COMPRAR la versión con soporte de varias empresas jejee Lo siento, no me pude aguantar al ver que escribiste comprar en el asunto del correo y en realizar es comparar jejeje :D :P -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] RE: [pgsql-es-ayuda] In Memoriam: Falleció Dennis Ritchie
++; El 17 de octubre de 2011 08:57, German Salinas gs.sali...@gmail.comescribió: Me pliego no al recuerdo y reconocimiento a Dennis Ritchie. Un genio y trabajador anonimo, esquivo al aplauso y las luces. Como son los puros de informatica German Salinas. Preparate Berlusconi de 16 ava categoria, vamos por ti a desenmascarar tus crimenes!! El 17 de octubre de 2011 09:25, José Fermín Francisco Ferreras josefermi...@hotmail.com escribió: Dennis Ritchie in verdadero genio!! un hombre que q con su propio intelecto (junto a el otro gigante: Ken Thompson) cambió verdaderamente el mundo!! Los informáticos agradecemos inmensamente los aportes de Dennis Ritchie, y lo honramos como se merecen los grandes!! ing. José Fermín Francisco Ferreras San Francisco de Macorís, Rep. Dom. CC: pgsql-es-ayuda@postgresql.org From: zikwa...@gmail.com Subject: Re: [pgsql-es-ayuda] In Memoriam: Falleció Dennis Ritchie Date: Fri, 14 Oct 2011 22:24:23 -0500 To: linux...@gmail.com Desde un iPod el merecido reconocimiento al genio sobre cuyos hombros florecieron Apple, Microsoft y tantos mas. Un autentico filántropo cuyo legado es incalculable, un héroe, como casi todos lo héroes auténticos: casi anónimo. Dennis Ritchie, descanse en paz, consuelo y fortaleza para la familia. Saludos, Sergio Sanchez Rivas Enviado desde mi iPod El 14/10/2011, a las 12:49, Guillermo O. Burastero linux...@gmail.com escribió: ref. http://es.wikipedia.org/wiki/Dennis_Ritchie El pasado 8 de octubre falleció Dennis MacAlistair Ritchie. Uno de los gigantes de las ciencias de la computación, coautor del sistema operativo Unix (con Ken Thompson) y del lenguaje de programación C (con Brian Kernighan). Lamento que su óbito halla pasado casi inadvertido, a diferencia del de Steve Jobs, cuando en mi opinión su legado a la informática fue muchísimo más importante y revolucionario que el que nos dejara el célebre empresario de la manzanita. q.e.p.d. Dennis. Todos los informáticos te debemos un agradecimiento eterno. #include stdio.h int main() { printf(“Hasta la vista Dennis, muchas gracias.\n”); return(0); } -- Guillermo O. Burastero Usuario GNU/Linux #84879 - http://counter.li.org/ Bahía Blanca, Buenos Aires, Argentina Tel. +54 (291) 454-6132 - Móvil [15] 574-3173 MSN: guillermo.burast...@gmail.com ICQ: 97148268 - Enviado a la lista de correo pgsql-es-ayuda ( pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda - Enviado a la lista de correo pgsql-es-ayuda ( pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] pg_restore con cambio de encriptación
El 17 de octubre de 2011 10:12, I.N.T. - Dpto. programación dpto.programac...@grupo-int.com escribió: Hola a tod@s, Me ha surgido el siguiente problema pero no veo cómo solucionarlo, quizás la respuesta esté en la lista y ya se ha respondido, pero no he sido capaz de encontrarlo... El problema es que tenemos un servidor PostgreSQL cuyas bases de datos están con codificación LATIN1 y SQL_ASCII, que en su momento eran perfectas y han funcionado muy bien. Tenemos que migrarlas a un nuevo servidor porque el actual se ha quedado un poco obsoleto, pero éste último debe estar obligatoriamente en UTF8 (todas las bases de datos, por cuestiones de diferentes idiomas a almacenar en ellas: checo, eslovaco, etc...), es decir, una encriptación universal... Hacemos todos los días la copia de seguridad del anterior servidor con pg_dump, funcionando y recuperando (pg_restore) perfectamente los datos. La cuestión es que pg_restore no permite recuperar esas bases de datos (*.backup, LATIN1 y SQL_ASCII) sobre el nuevo servidor (UTF8). Me dice que la encriptación es incorrecta y no me recupera ningún dato. He mirado los parámetros de pg_restore y no veo cómo hacerlo. ¿Alguien podría orientarme sobre cómo puede hacerse? La forma cutre que se me ocurre es volcar las tablas del viejo servidor a Access y traspasarlas (con Access de nuevo, obviamente) al nuevo servidor, pero aparte de que me llevaría bastante más tiempo y no queremos tener parado al cliente excesivamente, me parece una auténtica chapuza... Cualquier ayuda al respecto (solución, enlace a página, etc...) será agradecida enormemente. Hay que tener en cuenta que la recuperación tendrá que mantener los caracteres especiales del español (tíldes, eñes, etc...)... Un saludo, Luis P.D.- Si necesitais más información de los sistemas que utilizamos en cada servidor (codificación, versiones, etc...) os las paso - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org **) Para cambiar tu suscripción: http://www.postgresql.org/**mailpref/pgsql-es-ayudahttp://www.postgresql.org/mailpref/pgsql-es-ayuda Sin probar se me ocurre algo asi (sin probar): A tu respaldo con pg_dump cambia que cree la base de datos de LATIN-1 a UTF8 (un sed te puede ayudar - sed s/LATIN-1/UTF8/g ) En lugar de usar pg_restore usa psql con una variable de entorno ENCODING=UTF8 pgsql archivo.sql -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Manejo de funciones
El 11 de octubre de 2011 09:38, manuel antonio ochoa manuel8aalf...@gmail.com escribió: Qe ta lista buenos dias o buenas tardes, bueno ahi les va un pregunta basica para los particupantes te esta lista ; el punto es que es mejor utilizar o da igual en la siguiente situacion: Tengo un agente (programa en windows) que hace consultas a postgres por ejmplo un consulta la cual verifica si un campo A esta en true en caso de qe si me devuelve X row, la llamaremos (getalgo(param1)) y tengo otra funcion que que al campo A lo pone en false la llamaremos updatecampoA(). En el codigo del agente las llamadas son : function x(){ a = getalgo(param1) if a!=null updatecampoA() } Me comentan que la mananera anterior es la mejor manera de manejar con subfucniones dentro del agente, yo preferiria que solo fuera un sola fucniones en postgres llamada haztodo(param1) que manda llamara las dos fucniones getalgo(param1) y updatecampoA() y me regresara el row que ventajas o desventajas tienes esto ? saludos De ventaja se me ocurre que al tener tu código en una sola función de postgres podrias cambiar incluso tu agente de lenguaje o plataforma y no te tendrias que preocupar por algún olvido, es decir, si por alguna razon tienes que cambiar el updateCampoA() por updateCampoAyZ() tu no tendrias que preocuparte de actualizar tu programa agente, solo actualizas tu haztodo() para que llame a la nueva función. Con esto tienes centralizado tu función. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Ejecutar copy con stdin en vb6
El 11 de octubre de 2011 14:01, Mariano Reingart reing...@gmail.comescribió: 2011/10/11 Gilberto Castillo Martínez gilberto.casti...@etecsa.cu: El mar, 11-10-2011 a las 19:14 +0100, Alejandro Carrillo escribió: http://www.postgresql.org/docs/current/interactive/sql-copy.html Buscar seccion stdin, eso es la abreviatura de standart in (http://es.wikipedia.org/wiki/Entrada_est%C3%A1ndar). Solo deja insertar datos de forma masiva (COPY) usando este método a usuarios que no son superuser. Ya recuerdo, eso alguien lo comentó por acá y se debe a problemas de permisos de accesos para el cliente psql o usuario postgre sobre la carpeta donde esta el fichero en cuestión... también debes revisar el ENCODING del cliente y el servidor. Voy a poster a Mariano creo el tuvo una vez un royo parecido. No use COPY, dudo que se pueda usar STDIN con ODBC ya que no es algo muy estandard. Lo mas simple sería que pongan el archivo en alguna carpeta del servidor y usar el COPY FROM 'ruta' Lo que puedo ofrecerles son scripts en Python que tengo armados, que se podria llamar desde visual basic para subir archivos locales (usa extensiones para llamar a COPY FROM STDIN). Otra forma forma es usar INSERT con multiples valores: INSERT INTO films (code, title, did, date_prod, kind) VALUES ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'), ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy'); Donde ahi si se podrían usar multiples parametros (pero tiene un limite, segun mis pruebas, alrededor de 1000 registros, dependiendo del driver que usen y la cantidad de columnas) Igualmente COPY es muchisimo más rapido que INSERT, sobre todo para cientos de miles de registros o mas. Sds Mariano Reingart http://www.sistemasagiles.com.ar http://reingart.blogspot.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda Y porque no invocas al psql parametros desde vb6 -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Webhosting con Postgres en chile
Yo estoy empezando con linode.com. Es un servidcio de *Virtual private server (VPS)* por lo que no tiene nada al empezar, pero tu le puedes intalar tu distribucion de linux que mejor se te haga (de las que tienen) y configurar a tus necesidades. Es mas trabajo pero tambien mas sencilles en el sentido que puedes instalar programas que en ocaciones no se puede en un hosting normal. El 22 de julio de 2011 15:26, Miguel Angel Hernandez Moreno miguel.hdz@gmail.com escribió: Trabaje hace muchos años con http://www.awardspace.com/ ahora ya tiene Postgres, pero no maneje postgres, podrias intentar y comentarnos jejejejeje y ademas me sirvio mucho ese host El 22 de julio de 2011 15:13, Rodrigo Mercado rmercado.lis...@gmail.comescribió: Estimados, Estoy buscando un buen webhosting que tenga opción de trabajar con Bases de datos Postgres, si alguien ha trabajado en alguno o conoce alguno bueno favor indicarmelo. Saludos, Rodrigo Mercado S. -- ISC Miguel Angel Hernandez Moreno -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Inyecciones de código SQL
Esto me recuerda un exploit que casi casi me atrevo a hacerlo http://es.xkcd.com/strips/exploits-de-una-madre/
Re: [pgsql-es-ayuda] recusive ejemplo real
Gracias El 25 de enero de 2011 20:42, Carlos Beltran Villamizar cbeltr...@cable.net.co escribió: Diseños recursivos, como los de este ejemplo, son muy útiles en proyectos con temas organizacionales o contables. Sin embargo su manejo es de cuidado. Afortunadamente con recursive se pueden preparar muchos informes con su estructura jerárquica así: CREATE TABLE lineanegocio ( id serial, PRIMARY KEY (id), nombre character varying (100) NOT NULL, orden integer NOT NULL, lineanegocio_id int, FOREIGN KEY (lineanegocio_id) REFERENCES lineanegocio(id), activ boolean DEFAULT true ); --1 INSERT INTO lineanegocio (nombre, orden) VALUES ('FINCAS', 1); --2 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('AGRICOLA',1, 1); --3 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('PECUARIA',2, 1); --4 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('MANGOS', 1, 2); --5 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('CITRICOS', 2, 2); --6 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('AVES DE CORRAL',1, 3); --7 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('MANGO TOMMY', 1, 4); --8 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('MANGO COMUN', 2, 4); --9 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('NARANJA', 1, 5); --10 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('LIMON', 2, 5); --11 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('CARNE POLLO', 1, 6); --12 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('POLLO VIVO', 2, 6); --13 INSERT INTO lineanegocio (nombre, orden, lineanegocio_id) VALUES ('HUEVOS', 3, 6); --14 INSERT INTO lineanegocio (nombre, orden) VALUES ('SUPERMERCADOS', 2); -- ... WITH RECURSIVE lineasnegocio (nivel, id, nombre, lineanegocio_id, camino) AS ( SELECT 0, padre.id, padre.nombre, padre.lineanegocio_id, padre.orden::text || padre.nombre::text FROM lineanegocio AS padre WHERE padre.lineanegocio_id IS NULL UNION ALL SELECT padre.nivel + 1, hijo.id, hijo.nombre, hijo.lineanegocio_id, padre.camino || '.' || hijo.orden::text || hijo.nombre FROM lineasnegocio padre JOIN lineanegocio AS hijo ON hijo.lineanegocio_id = padre.id ) SELECT rpad('', nivel * 2, '_') || nombre AS nombre_unidad_negocio, id FROM lineasnegocio ORDER BY camino; Compañeros de lista. Espero les sirva. Desde Bogotá. Colombia. Carlos Beltrán Villamizar. - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Duda sobre time en Postgres
El 15 de diciembre de 2010 12:53, raul velez demoramu...@yahoo.esescribió: Saludos a todos, quisiera saber cuando usar time with time zone y time without time zone se que el primero es para incluir la zona horaria y el segundo no, pero en que casos podría usar cada uno??? En que casos lo usarían ustedes?? Desde mi punto de vista Para un poco mas de facilidad, se usa sin zona horaria cuando: 1.- tu aplicación no lo necesita 2.- estas importando los datos y no incluye la zona horaria Pero con respecto al punto 1, es mejor no creerlo. nunca se sabe a ciencia cierta cuanto va a crecer tu sistema en el futuro. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] [OT] A cubanos
Hola compañeros Cubanos de Postgresql Recordando mensajes como este (1), les comento que como voy a ir de vacaciones a Cuba el proximo fin de semana, ¿alguien necesita algun software y quiera que se lo lleve? Claro si es que no tengo problemas para pasarlo en el aeropuerto, que desconozco si se puede. 1 http://www.mail-archive.com/pgsql-es-ayuda@postgresql.org/msg10368.html -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] windows active directory y postgres
El 11 de agosto de 2010 11:20, Suso jlcu...@terra.es escribió: Hola de nuevo, espero estén bien:) El tema es el siguiente, me han pedido que en la autentificación de postgres use el windows active directory y SSL.. Uso SSL y md5 actualmente, ¿ se puede cambiar a lo que el cliente pide ?. ActiveDirectory es un LDAP con muchas mas monerias, buscale por ahi.
Re: [pgsql-es-ayuda] indice usando un CASE (8.2)
Gracias a todos por sus respuestas, las voy a probar
[pgsql-es-ayuda] indice usando un CASE (8.2)
Hola Lista, Tengo un servidor usando la versión 8.2, Ya se que es viejita pero no necesito mucho, son 100,000 registros nuevos al año. Bueno pasando al problema, quise hacer el siguiente indice pero marco error CREATE INDEX folio_folio_num_index ON folio USING btree (CASE WHEN (strpos(folio.folio::text, '-'::text) - 1) 0 THEN substr(folio.folio::text, 1, strpos(folio.folio::text, '-'::text) - 1)::bigint ELSE folio.folio::bigint END ); el error fue ERROR: syntax error at or near CASE LINE 8: (CASE ^ ** Error ** ERROR: syntax error at or near CASE SQL state: 42601 Character: 135 ¿Es posible o voy a tener que esperar al hacer mis querys? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Left Join
select vendedor.nombre, count (ventas.id_documento) from vendedor left join ventas on (vendedor.id_vendedor = ventas.id_vendedor and ventas.fecha between '20100101' and '20100531') group by 1 Nunca se me habia ocurrido, ni sabia que fuera posible poner un clausula de ese tipo dentro del ON. Es bueno aprender algo nuevo
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Error al r ealizar una sentencia SELECT LIMIT 1 usando una conexión OD BC
El 17 de mayo de 2010 14:32, Roberto M. Ruiz S. robware.r...@gmail.comescribió: El 17/05/2010 02:25 p.m., Jaime Casanova escribió: de postgres y mira que sentencia es la que te esta dando error... o si estas construyendo la sentencia dinamicamente fijate si se te escapo un WHERE porque no es posible que te de un error de sintaxis en o cerca de WHERE en una sentencia sin clausula WHERE:) La sentencia que envio la obtengo directamente del código generado y sale el error como lo ve lo raro es que ese código ya funciona en otro programa - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org ) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda En el ODBC tiene una opción para que en c:\ se cree un log de lo que esta sucediendo, o en postgres puedes cambiar el nivel del log_statment para que tambien registre los comandos -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Zonas horarias incorrectas
El 17 de marzo de 2010 09:03, Edwin Quijada listas_quij...@hotmail.comescribió: Hola, tengo un extrano error con respecto a las zonas horarias. estoy haciedno un select de una hora de estaer y me esta dando una hora menos ejemplo select now() AT TIME ZONE 'EST'; and I get this: 3/17/2010 9:51:37 AM y realmente deberia conseguir una hora mas porque la hora cambio debio ser 3/17/2010 10:51:37 AM Aparentemente la zona horaria no me esta funcinoando. *---* *-Edwin Quijada *-Developer DataBase *-JQ Microsistemas *-Soporte PostgreSQL *-www.jqmicrosistemas.com *-809-849-8087 *---* -- Creo recordar que esto se trato hace mucho y el problema es porque el sistema operativo no estaba actualizado, que es el que indica cual es su huso. es linux o windows? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Ayuda con query de intervalo de tiempo entre registro
Gracias a todos, por la versión de pg que uso voy a hacerlo como menciona Silvio El 15 de febrero de 2010 14:54, Alvaro Herrera alvhe...@alvh.no-ip.orgescribió: Miguel Beltran R. escribió: Hola Lista Tengo unos registros con un campo datetime que representan cuando se insertaron ¿qué query me puede ayudar a saber el tiempo promedio entre uno y otro? Ej. valor captura 12010-02-15 12:00:01 22010-02-15 12:00:03 32010-02-15 12:00:08 Entre el 1ro y 2do fueron 2 segundos y entre el 2do y 3ro fueron 5 segundos, sumados son 7 segundos entre 3 registros serian un promedio de 2.33 segundos La manera más limpia es con una función ventana. Por ej. alvherre=# create table miguel (a serial, b timestamp default now()); NOTICE: CREATE TABLE creará una secuencia implícita «miguel_a_seq» para la columna serial «miguel.a» CREATE TABLE alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# insert into miguel default values; INSERT 0 1 alvherre=# select * from miguel; a | b ---+ 1 | 2010-02-15 17:45:34.116514 2 | 2010-02-15 17:45:36.236193 3 | 2010-02-15 17:45:39.316307 4 | 2010-02-15 17:45:40.044354 5 | 2010-02-15 17:45:43.292354 6 | 2010-02-15 17:45:44.644171 7 | 2010-02-15 17:45:46.204193 (7 filas) alvherre=# select *, b - lag(b) over (order by b ROWS BETWEEN UNBOUNDED PRECEDING AND current row) from miguel; a | b |?column? ---++- 1 | 2010-02-15 17:45:34.116514 | 2 | 2010-02-15 17:45:36.236193 | 00:00:02.119679 3 | 2010-02-15 17:45:39.316307 | 00:00:03.080114 4 | 2010-02-15 17:45:40.044354 | 00:00:00.728047 5 | 2010-02-15 17:45:43.292354 | 00:00:03.248 6 | 2010-02-15 17:45:44.644171 | 00:00:01.351817 7 | 2010-02-15 17:45:46.204193 | 00:00:01.560022 (7 filas) A partir de ahí puedes hacer como quieras con las diferencias entre valores. Para obtener el promedio de todos esos valores; por ejemplo, alvherre=# select min(a), max(a), avg(dif) from (select a, b, b - lag(b) over (order by b ROWS BETWEEN UNBOUNDED PRECEDING AND current row ) as dif from miguel) foo; min | max | avg -+-+- 1 | 7 | 00:00:02.014613 (1 fila) -- Alvaro Herrera Vendo parcela en Valdivia: http://rie.cl/?a=255568 Oh, great altar of passive entertainment, bestow upon me thy discordant images at such speed as to render linear thought impossible (Calvin a la TV) -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Ayuda con query de intervalo de tiempo entre registro
Hola Lista Tengo unos registros con un campo datetime que representan cuando se insertaron ¿qué query me puede ayudar a saber el tiempo promedio entre uno y otro? Ej. valor captura 12010-02-15 12:00:01 22010-02-15 12:00:03 32010-02-15 12:00:08 Entre el 1ro y 2do fueron 2 segundos y entre el 2do y 3ro fueron 5 segundos, sumados son 7 segundos entre 3 registros serian un promedio de 2.33 segundos Gracias de antemano. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Personalizar Mensajes de Exceptions
2009/9/16 Sergio David mr.sd...@gmail.com Hola gente de la lista... Estoy llevando a cabo un proyecto, y realizando la parte de logica de negocios a nivel de base de datos... Encontre que PostgreSQL tiene la posibilidad de capturar errores dentro de las funciones, al mejor estilo try... catch... El problema que tengo ahora es que quiero personalizar los errores... Tengo la siguiente estructura... [CODE] CREATE TABLE instituciones ( ins_codinst serial NOT NULL, ins_tipoinst character varying(10) NOT NULL, ins_nombre character varying(30) NOT NULL, CONSTRAINT pk_instituciones PRIMARY KEY (ins_codinst) ) [/CODE] y la siguiente funcion para realizar los ABM (CUD) a dicha tabla.. [CODE] CREATE OR REPLACE FUNCTION abm_instituciones(bpchar, integer, character varying, character varying) RETURNS void AS $BODY$ DECLARE in_action ALIAS FOR $1; in_id ALIAS FOR $2; in_inst_nombre ALIAS FOR $3; in_tipoinst ALIAS FOR $4; BEGIN IF in_action = 'S' THEN -- if id is null, save it... otherwise... update it IF ((select count(*) from dominios where dom_coddompadre = 'O.TI' and dom_coddom = upper(trim(in_tipoinst))) = 0) THEN RAISE EXCEPTION 'El codigo % no corresponde a un tipo de institución', upper(trim(in_tipoinst)); END IF; IF in_id IS NULL THEN INSERT INTO instituciones (ins_codinst, ins_tipoinst, ins_nombre) VALUES (nextval('instituciones_ins_codinst_seq'), upper(trim(in_tipoinst)), upper(trim(in_inst_nombre))); ELSE UPDATE instituciones SET ins_tipoinst = upper(trim(in_tipoinst)), ins_nombre = upper(trim(in_inst_nombre)) WHERE ins_codinst = in_id; END IF; ELSE DELETE FROM instituciones WHERE ins_codinst = in_id; END IF; -- Catch errors if any EXCEPTION WHEN not_null_violation THEN RAISE EXCEPTION 'Todos los campos son requeridos'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'La institución no puede ser borrada, existen dependencias para este registro.'; WHEN string_data_right_truncation THEN RAISE EXCEPTION 'Se ha superado el maximo de caracteres permitidos.'; WHEN unique_violation THEN RAISE EXCEPTION 'La institución % ya existe en la base de datos.', upper(trim(in_inst_nombre)); END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; [/CODE] Todo bien hasta aca, captura todos los errores marcados despues del EXCEPTION. Lo que yo quiero saber es si es posible capturar la columna que disparo el error. Supongamos que se supero el maximo de caracteres de la columna nombre, entonces mostrar un mensaje de que es esa columna la que esta causando conflicto... o Si es que esta en null, marcar cual columna es que quedo en null... Porque de la manera en que esta planteado ahora, los mensajes son muy genericos, supongamos que tengo 20 columnas NOT NULL... Como puedo hacer saber al usuario cual de esas columnas fue la que genero el error... Se entiende? Hay forma de hacerlo? Espero respuesta... Muchas Gracias... Yo hizo algo asi, pero lo tuve que hacer en la aplicación cliente. En python leida la cadena error generica de postgresql y con split la divido y saco los datos. Cuando pregunte algo parecido, me comento Alvaro que se tiene internamente todos los datos, pero no son accesibles desde pl/pgsql. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Quiero cancelar mi suscripción al foro
El 15 de septiembre de 2009 19:28, Yessica Brinkmann yessica.brinkm...@gmail.com escribió: Hola lista, Quisiera cancelar mi suscripción a este foro, alguien sabe como puedo hacer? Saludos, Yessica Brinkmann Estoy viendo que usas gmail, la mas facil es en la parte superior donde sale tu nombre, en mostrar detalles, apareceran varias opciones y la del final Anular suscripcion. le das click ahi -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] ERROR: relation ctr_alt does not exist en una funcion
El 20 de agosto de 2009 21:49, Suso Lopez jlcu...@terra.es escribió: Aqui me surge una duda, si yo, desde esta funcion quiero acceder a otra tabla que esta en otra base de datos, es posible? Si Por ejemplo tengo esta BD ctr_alt y la tabla bloq, si quiero acceder a una BD que se llama Clientes, una de cuyas tablas se llama fact, se peude hacer? Necesitas usar dblink (creo que esta en /contrib), pero lo recomendable es si vas a compartir mucha informacion entre las bases de datos, que pongas las 2 bases de datos en 1 sola en dos namespace.
Re: [pgsql-es-ayuda] ERROR: relation ctr_alt does not exist en una funcion
El 21 de agosto de 2009 09:25, Sergio Gabriel Rodriguez sgrodrig...@gmail.com escribió: 2009/8/21 Miguel Beltran R. yourpa...@gmail.com: Necesitas usar dblink (creo que esta en /contrib), pero lo recomendable es si vas a compartir mucha informacion entre las bases de datos, que pongas las 2 bases de datos en 1 sola en dos namespace. dos namespace? o transformar las dos bases en dos schemas diferentes dentro una única bd Sergio Gabriel Rodriguez http://www.3trex.com.ar jaja perdon me referia a schemas -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] ¿Existe una función en JavaSc ript para poder saber el Número de parametros recibidos en una función creada por el usuario?
El 19 de agosto de 2009 13:54, Iván Caballero Cano ivanhalen77postgre...@gmail.com escribió: Miguel: No me equivoque de lista, pregunte por que hoy en día las tecnologias se usan generalmente juntas para crear una solución generalmente web ahora que esta mas de moda. Si usas PostGreSQL existe una gran posibilidad de que tambien desarrolles en web y por lo tanto podemo decir que es un tema relacionado con experiencias de programadores. Ubicate chavo! No soy yo quien esta desubicado. Yo lo que quise responder (aunque parece que me falto explicación) Es que aqui se ven temas de postgresql con otras tegnologias, pero compactibles (para esto ya leiste el manual). Si no sabes si funciona, pregunta. ¿funciona postgresql con javascript? o como te indicaron usar las reglas de cortesia de internet y poner que es un off-topic (ves como si estas tú desubicado si no las conoces) Tu pregunta va mas enfocada a web que se ejecuta en la maquina cliente en un navegador (por eso no va aqui) y con un servidor web que SE COMUNICA con postgresql, Existe postgresql + java, pero NO con javascripts Tu pregunta va mejor en listas de Zope, Apache, diagnjo, etc. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] Cual es el mejor uso de indices en esta tabla ?¿
Con riesgo a equivocarme creo que lo mejor es http://www.postgresql.org/docs/8.4/interactive/textsearch.html Se hablo hace poco de eso http://archives.postgresql.org/pgsql-es-ayuda/2009-08/msg00012.php http://archives.postgresql.org/pgsql-es-ayuda/2009-06/msg00506.php El 17 de agosto de 2009 18:27, juan juanrami...@cajazacate.com.svescribió: Tengo una tabla así: CREATE TABLE personas ( codigo numeric(8) NOT NULL, apellido1 text, apellido2 text, nombre1 text, nombre2 text, CONSTRAINT padron_pkey PRIMARY KEY (dui) ); tiene casi 4 millones de registros, ahora bien, tengo que realizar consultas por nombres, entonces pregunto como creo el o los indices para tener mejor performance ... tener un solo indice por todas las columnas text o un indice por cada columna ?¿?¿ Si las consultas que hare son de este tipo: select * from personas where apellido1 ilike '%JUAN%' and apellido ilike '%RAMIREZ%' Cual de estos indices es Mejor, 1- CREATE INDEX dui_idx ON personas USING btree (apellido1, apellido2, nombre1, nombre2, nombre3); 2- CREATE INDEX dui_idx1 ON personas USING btree (apellido1); CREATE INDEX dui_idx2 ON personas USING btree (apellido2); bla bla bla -- Cordialmente, Juan Ramírez Miranda El Salvador -- TIP 6: ¿Has buscado en los archivos de nuestra lista de correo? http://archives.postgresql.org/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] salen signos de interrogacion e n lugar de ñ o acentos
¿Cómo estas insertando la información? ¿desde un archivo de texto? ¿una aplicació?¿usas odbc? El 31 de julio de 2009 18:23, Manuel A. Estevez Fernandez stvz...@gmail.com escribió: Saludos a todos. Creé una base de datos con encoding LATIN-1 y cuando cargo datos con acentos o 'ñ' sale un ?. ¿Por qué sucede eso y cómo lo puedo solucionar? Nota: No puedo evitar poner estos datos, porque estamos cargando la DB a partir de información contenido en otra y es información de producción. Atentamente. Manuel Alejandro Estévez Fernández. -- TIP 7: no olvides aumentar la configuración del free space map -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] caracteristicas unicas de postgresql
El 16 de julio de 2009 18:38, Emanuel Calvo Franco postgres@gmail.comescribió: Oracle y MySQL ejecutan un COMMIT automaticamente despues de cualquiera de estas operaciones... Informix si lo maneja correctamente, al igual que Postgres. Aclaremos Jaime, NO es casulidad, Informix es un fork de postgres ;) ¿Dónde puedo ver mas a detalle eso del fork?, en wikipedia en español no lo veo (aun no termino de leer)
Re: [pgsql-es-ayuda] caracteristicas unicas de postgresql
Fuente: la historia es recopilada por Elein Mustein, que era parte del equipo de Illustra que fue a Informix. http://archives.postgresql.org/pgsql-advocacy/2004-12/msg00033.php -- Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J Gracias, muy interesante. Ahora con esto tengo otra pregunta No conozco informix, ¿sigue siendo parecido a postgresql? ¿o ya cambio tanto que un DBA de postgresql le costaria un poco adaptarse a informix?
Re: [pgsql-es-ayuda] Fundamento teorico del rendimiento de una vista
El 15 de julio de 2009 14:13, Jaime Casanova jcasa...@systemguards.com.ecescribió: 2009/7/15 Manuel A. Estevez Fernandez stvz...@gmail.com: Hola a todos. create view vista1 as select * from mitabla; cuando yo ejecute select * from vista1 lo que en realidad estoy ejecutando es: select * from mitabla Una duda Jaime, si haces select * from vista1 where campo1=1 (campo1 tendria un indice y con la condicion solo regresaria el 10% de la tabla) ¿cómo analiza el motor el hacer la consulta? ¿ve que la vista no tiene condicionantes y solo agrega la nueva?¿o hace la busque de la vista y despues le aplica un filtro? ¿que pasa si la vista tiene condicionantes?
Re: [pgsql-es-ayuda] Ordenar Columnas
El 11 de julio de 2009 08:58, Luis A. Zevallos Cárdenas lzeval...@lobosistemas.com escribió: Hola si se puede pero tienes que modificar una tabla pg_attribute ejemplo select attrelid, attname, attnum from pg_attribute where attname like 'pais%' and attrelid = 18371 18371;pais_cod;1 18371;pais_dsc;2 18371;pais_smb;3 18371;pais_fcreacion;4 18371;pais_usrcreacion;5 18371;pais_ipcreacion;6 Aqui te dice la posicion de las columnas si quieres cambiar el orden solo tienes que hacer un update a esta tabla.pero con cuidado ya que es una tabla muy importante para postgresql bueno adios Si es tan sencillo, voy a checar en pgAdmin a ver si lo tienen en un whislist, si no para pedirlo. Aunque es una opcion que en la practica no ayuda realmente, pero visualmente uno quiere ver las columnas en cierto orden para entenderse mejor.
Re: [pgsql-es-ayuda] WEB 2.0
La pregunta que quiero hacer es porque postgresql no esta incluida dentro de las bases de datos XML o XML databases ver http://en.wikipedia.org/wiki/XML_database#Native_XML_databases, Esto con el fin de utilizar nuestra preciada base de datos de forma revolucionaria en aplicaciones Web 2.0? Tal vez no este actualizado la wiki http://www.postgresql.org/docs/8.4/static/datatype-xml.html
Re: [pgsql-es-ayuda] ESPACIOS EN BLANCO EN UNA QUERY
en tu insert pondrias inserto into productos (nombre) value (btrim(' Joyeria ')) y esto se guardaria como 'Joyeria' algo importante seria agregar una restriccion con check(length(btrim(nombre))3) para que tenga minimo 4 caracteres El 30 de junio de 2009 09:09, Lorena Gpe. M. Osorio pequ...@gmail.comescribió: Buen día a todos tengo una duda que talvez sea demasiado fácil pero ya ´me provocó dolor de cabeza, en mysql se resuelve con rtrim pero aquí en postgres no he podido encontrar como evitar que me inserte espacios en blanco. por ejemplo al insertar la descripcion de 'JOYERIA', si por algun motivo llego a insertar 'JOYERIA ' con espacios a la derecha me los inserta tal cual y al momento de hacer mi consulta: select * from clasif where clf_desc = 'JOYERIA' solo me trae el registro que inserte sin espacios y el otro no lo toma en cuenta, espero me puedan ayudar, ya sea para eliminar los molestos espacios en blanco al final de mi query o bien para evitar insertarlos. saludos y buen día. -- L.S.C. Lorena Gpe. M. Osorio -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] no hacer un insert pero siga la transacción
Hola lista Por un sistema WEB que manejo tengo que si detecto un valor en un input ejercute un INSERT en PG, pero tengo el problema que revisando si mando un 0 (cero en numero) el sistema me lo toma como '0' (cero en cadena) y si hace un INSERT. ¿Es posible que PG decirle que si ese campo es 0 (porque al llegar a PG se pasa como númerico) no haga el INSERT?. Algo importante este INSERT esta dentro de una transaccion de hasta 24 INSERTS asi que no debe interumpir la transacción. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] no hacer un insert pero siga la transacción
¿No es más fácil hacer el IF en el lenguaje del sitio Web (PHP Perl o lo que tengas)? Silvio No creo porque tendria que hacer 24 if y con lo que dijo Alvaro solo hago uno ademas es bueno saber esto, para algo de mas podria servirme
[pgsql-es-ayuda] Re: [pgsql-es-ayuda] no hacer un insert pero siga la transacción
Usa un trigger BEFORE INSERT que verifique si el valor es 0, y de serlo, returna NULL, con lo cual ese insert no se efectua. En caso de no ser 0, returna NEW, con lo cual el insert se hace normalmente. Gracias Alvaro, quedo así REATE OR REPLACE FUNCTION func_quincena_material_00_monto() RETURNS trigger AS $BODY$ BEGIN -- Work out the increment/decrement amount(s). IF (TG_OP = 'INSERT') THEN --se lo pongo para saber para que casos es la funcion IF NEW.monto = 0 THEN RETURN NULL; END IF; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100; ALTER FUNCTION func_quincena_material_00_monto() OWNER TO admin_ceed;
Re: [pgsql-es-ayuda] DECLARE Y SET
El 9 de junio de 2009 23:07, Dilm E.I.R.L i.d...@yahoo.es escribió: Estimados, nuevamente yo, con una duda: En SQL Server 2000 (solo por dar un ejemplo de como usaba DECLARE y SET) hacia algo asi : DECLARE @mistring varchar(1000) SET @mistring='' /*inicializar variable*/ SELECT @mistring = @mistring + ' ' + RTRIM(columna) from PruebaEmail /*concatenar*/ SELECT @mistring Solo para clarificar. Postgresql a diferencia de MS Sql, tengo entendido que separa donde puedes usar SQL puro y donde funciones En MS Sql Server tu puedes hacer eso como una consulta normal. En Postgresql tienes que crear una funcion para que te permita declarar variables y otras cosas. esto es porque lo puedes hacer con varios lenguajes diferentes todo depende con que lenguaje indicaste que trabaja tu funciones. pl/pgsql, pl/python, pl/php, pl/java, etc. Como declares y uses las variables depende del lenguaje que quieras usar. Creo que todos pusieron ejemplos de pl/pgsql. Aunque no sabia que se podia hacer lo que dijo Julio Cesar Rodriguez Dominguez
Re: [pgsql-es-ayuda] nombre quien mando la exception?
... Esta es una de las cosas que deberíamos mejorar en Postgres. El mensaje de error ya está separado en varios campos (message, hint, detail, context, file, line, position etc) ... pero faltan algunos campos con esta información: el nombre de la tabla involucrada, el nombre de la restricción, el nombre del índice, etc. No debería ser difícil modificar Postgres para que la entregue, pero alguien tendría que financiarlo ... -- Alvaro Herrera http://planet.postgresql.org/ Tiene valor aquel que admite que es un cobarde (Fernandel) Gracias Alvaro. Probare un poco revisando el mensaje de y si es mucho problema lo dejo, igual y no es grande el programa y la BD. Por cierto (como broma), parece que a ti te pagan para responder las preguntas de muchos de los novatos como yo :P eres de los que mas responde. jajaja
[pgsql-es-ayuda] nombre quien mando la exception?
Hola lista ¿Existe alguna forma de saber el nombre un conStraint que genero una excepción? Ejemplo, si tengo ck_material_usado CHECK (usado = recibido) ck_material_reservado CHECK (reservado = monto); Y hago un update a esa tabla donde alguna (cualquiera) de las retricciones va a levantar una excepción que yo atrapo con su clausula EXCEPTION WHEN check_violation THEN, pero como puedo saber con cual se la lanzo la excepción para yo poder regresar un mensaje de error mas especifico. No hay dinero suficiente en la cuenta o La cuenta no puede recibir mas dinero que el establecido originalmente. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Consulta de(por) fechas
El 11 de mayo de 2009 19:26, suso jlcu...@terra.es escribió: Hola Miguel, me ha funcionado perfectamente:) Me alegro que te sirviera :D Y mira que he buscado, y no había encontrado nada útil,incluso llegué a poner fecha=:... Pq leí en algún site que las fechas había que ponerlas así:) Muchas gracias otra vez P.D.:Te puedo hacer otra pregunta sobre logs en postgres? puedes preguntar, pero de eso no se mucho, mejor manda una nueva pregunta a la lista. Igual si se te contesto Un slaudo Suso cadena = Select * from mot1 where nhc = CLng(n_historia) _ and fecha = # Format(NUEVA_FECHA, mm/dd/) # Las fechas se tratan/manejan de otra manera en postgres? Se tratan como cadena, pero estas pueden tener diferentes formatos (1). prueba con: and fecha = ' Format(NUEVA_FECHA, mm/dd/) ' Solo anterior tiene comillas simples, despues del signo igual y al final. Es importante que configures postgresql para que te lea las fechas en ese formato (2). Yo por como se usa en México uso dd/mm/ o /mm/dd. (1) http://www.postgresql.org/docs/8.3/static/datatype-datetime.html#DATATYPE-DATETIME-DATE-TABLE (2) http://www.postgresql.org/docs/8.3/static/datatype-datetime.html#DATATYPE-DATETIME-INPUT Se certificó que el correo entrante no contiene virus. Comprobada por AVG - www.avg.es Versión: 8.5.320 / Base de datos de virus: 270.12.24/2108 - Fecha de la versión: 05/11/09 05:52:00 pd. Por cierto desde que te conteste olvide mandar una copia a la lista, ahora si lo hago. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] traducciones (era Re: Consulta sobre entidades)
Ahora mismo estoy preparando la traducción para 8.4 y tengo la duda de cómo traducir la frase foreign-data wrapper. Leyendo el contexto a mi parece mejor adaptador de datos externos At the moment, the foreign-data wrapper functionality is very rudimentary. The purpose of foreign-data wrappers, foreign servers, and user mappings is to store this information in a standard way so that it can be queried by interested applications. The functionality to actually query external data does not exist yet.
[pgsql-es-ayuda] consulta en la aplicación ó una vista?
Hola lista Tengo esta consulta en mi sistema (uso zope2) select e.ejercicio_id, e.ejercicio, p.proyecto, p.proyecto_id, p.proyecto_nombre, u.ures, u.ures_id, u.ures_nombre, ej.eje, ej.eje_id, c.centro, c.centro_id, c.centro_nombre from proyecto p inner join ejercicio e ON e.ejercicio_id = p.ejercicio_id inner join eje ej ON ej.eje_id = p.eje_id inner join ures u ON u.ures_id = p.ures_id inner join centro c ON c.centro_id = u.centro_id where p.ejercicio_id = dtml-sqlvar ejercicio_id type=int and p.proyecto = dtml-sqlvar proyecto type=nb Es mejor tener esto en mi sistema ó hacer una vista en postgresql: select e.ejercicio_id, e.ejercicio, p.proyecto, p.proyecto_id, p.proyecto_nombre, u.ures, u.ures_id, u.ures_nombre, ej.eje, ej.eje_id, c.centro, c.centro_id, c.centro_nombre from proyecto p inner join ejercicio e ON e.ejercicio_id = p.ejercicio_id inner join eje ej ON ej.eje_id = p.eje_id inner join ures u ON u.ures_id = p.ures_id inner join centro c ON c.centro_id = u.centro_id y en zope solo hacer select * from vista_proyecto where ejercicio_id = dtml-sqlvar ejercicio_id type=int and proyecto = dtml-sqlvar proyecto type=nb Esta consulta la necesito solo para recuperar un registro a la vez. ¿cómo es mejor?¿pórque? La pregunta mas inútil es la que no se hace. Lo bueno de vivir un día mas es saber que nos queda un dia menos de vida o era Lo bueno de saber que nos queda un día menos de vida es haber vivido un dia mas
Re: [pgsql-es-ayuda] OT: mejores practicas
si el anio es el mismo que en tabla A no deberia estar aqui, mas bien aqui deberia estar el codigo del registro de tablaA lo que me hace que pensar que mi suposicion de que proyectoA deberia formar parte del PK de tablaB es correcta Es el mismo, pero esta el anio para no tener que buscar el dato en la tablaA. Es mala idea. Te recomiendo quitarlo, y una vez que la aplicación esté más avanzada, medir qué optimizaciones realmente necesitas. Lo más probable es que la desnormalización que te llegue a hacer falta (si es que alguna) sea totalmente distinto de lo que te imaginas al principio. Una ultima duda con la rapidez, igual y por eso estoy mal con mis diseños. Si hago una vista de tablaC que jale el dato de tablaA para tomar el anio, cuanta carga se para la base. claro que usario indices. Diseña normalizado. Una vez que esté listo, desnormalizas sólo allí donde sea realmente necesario. De lo contrario es mucho más difícil mantener todo. Ya normalize todo según yo. Pero llegue a un punto que no se como seguir aplicando, en la tabla vale tengo el campo ejercicio_id que tiene que ser el mismo que en la tabla proyecto. Tiene que estar porque la PK es ejericio_id, vale. vale es un campo númerico que empieza de 1 en cada ejercicio. Ya cambie todo a lo siguiente. Nota: los campos tipo serial tienen un INDEX UNIQUE. CREATE TABLE proyecto ( proyecto_id serial NOT NULL, proyecto character varying(10) NOT NULL, monto numeric(15,2) NOT NULL DEFAULT 0, usado numeric(15,2) NOT NULL DEFAULT 0, ures_id integer NOT NULL, eje_id integer NOT NULL, objetivo_pdi_id integer NOT NULL, estrategia_pdi_id integer NOT NULL, tipo_proyecto_id integer NOT NULL, programa_id integer NOT NULL, proyecto_nombre character(120) NOT NULL, justificacion text NOT NULL, objetivo_general text NOT NULL, inicio date NOT NULL, fin date NOT NULL, ejercicio_id integer NOT NULL, CONSTRAINT pk_proyecto PRIMARY KEY (ejercicio_id, proyecto), CONSTRAINT fk_proyecto_eje FOREIGN KEY (eje_id) REFERENCES eje (eje_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_ejercicio FOREIGN KEY (ejercicio_id) REFERENCES ejercicio (ejercicio_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_estrategia_pdi FOREIGN KEY (estrategia_pdi_id) REFERENCES estrategia_pdi (estrategia_pdi_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_objetivo_pdi FOREIGN KEY (objetivo_pdi_id) REFERENCES objetivo_pdi (objetivo_pdi_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_programa FOREIGN KEY (programa_id) REFERENCES programa (programa_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_tipoproyecto FOREIGN KEY (tipo_proyecto_id) REFERENCES tipo_proyecto (tipo_proyecto_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_proyecto_ures FOREIGN KEY (ures_id) REFERENCES ures (ures_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION ) CREATE TABLE objetivo ( objetivo_id serial NOT NULL, proyecto_id integer NOT NULL, objetivo character varying(10) NOT NULL, proyecto_objetivo_nombre text NOT NULL, CONSTRAINT pk_objeivo PRIMARY KEY (proyecto_id, objetivo), CONSTRAINT fk_objetivo_pyoyecto FOREIGN KEY (proyecto_id) REFERENCES proyecto (proyecto_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) CREATE TABLE meta ( meta_id serial NOT NULL, meta character varying(10) NOT NULL, meta_nombre character varying(200) NOT NULL, indicador character varying(100) NOT NULL, plan_id integer NOT NULL, objetivo_id integer NOT NULL, CONSTRAINT pk_meta PRIMARY KEY (objetivo_id, meta), CONSTRAINT fk_meta_objetivo FOREIGN KEY (objetivo_id) REFERENCES objetivo (objetivo_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT fk_meta_plan FOREIGN KEY (plan_id) REFERENCES plan (plan_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION ) CREATE TABLE actividad ( actividad_id serial NOT NULL, actividad character varying(10) NOT NULL, actividad_nombre text NOT NULL, inicio date NOT NULL, fin date NOT NULL, monto numeric(15,2) NOT NULL, reservado numeric(15,2) NOT NULL DEFAULT 0, meta_id integer NOT NULL, usado numeric(15,2) NOT NULL DEFAULT 0, CONSTRAINT pk_actividad_meta_actividad PRIMARY KEY (meta_id, actividad), CONSTRAINT fk_actividad_meta FOREIGN KEY (meta_id) REFERENCES meta (meta_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION, CONSTRAINT ck_actividad_reservado CHECK (reservado = monto), CONSTRAINT ck_actividad_usado CHECK (usado = reservado) ) CREATE TABLE material ( material_id serial NOT NULL, actividad_id integer NOT NULL, captura time without time zone NOT NULL DEFAULT now(), material character varying(10) NOT NULL, material_nombre
Re: [pgsql-es-ayuda] OT: mejores practicas
Primero gracias a todos por contestar El 20 de marzo de 2009 9:31, Jaime Casanova jcasa...@systemguards.com.ecescribió: 2009/3/19 Miguel Beltran R. yourpa...@gmail.com: Platicando con un amigo sobre como es mejor diseñar una base de datos tenemos un punto de desacuerdo. Yo digo que siguiendo la normalización en ocaciones puede ser un problema creo (ó es un mal diseño mio tal vez). esto no parece muy normalizado que digamos... Por ejemplo siguiendo la normalización (la estructura es solo para dar una idea): tablaA { id serial; proyectoA integer PRIMARY KEY; proyectoA_nombre text; anio integer; } para que el id serial? todas las tablas tienen uno y me parece que no sirve a ningun proposito util... Su mayor proposito es como punto de referencia de saber en que momento se inserto el dato, para detectar posibles errores de captura. como meter el proyectoA 99 y si despues reviso darme cuenta que lo metieron despues del 65. y antes del 70. (no siempre nos tocan proyectos consecutivos 11,12,13) tablaB { id serial; proyectoA integer reference tablaA (proyectoA) proyectoB integer PRIMARY KEY fecha date; fondo varchar(10); cuenta varchar(10); } si tabla B depende directamente de tabla entonces proyectoA deberia formar parte del PK, por ejemplo si tabla B almacena algun tipo de detalle (como en el caso de la factura y el detalle de la factura) pero sin saber que tipo de informacion se va a almacenar solo son conjeturas TablaB si depende directamente de tablaA. Por lo que se (porque no se supieron decir los que me pidieron el programa) es que nunca se repite proyectoB tablaC { id serial; anio integer; --es el mismo que en tablaA proyetoC integer; --es un consecutivo que empieza --en 1 cada año, no se debe repetir --por eso se combina con anio. proyectoB integer REFERENCE tablaB (proyectoB); }PRIMARY KEY (anio, proyectoC) si el anio es el mismo que en tabla A no deberia estar aqui, mas bien aqui deberia estar el codigo del registro de tablaA lo que me hace que pensar que mi suposicion de que proyectoA deberia formar parte del PK de tablaB es correcta Es el mismo, pero esta el anio para no tener que buscar el dato en la tablaA. tablaD { id serial; tablaC_id integer REFERENCE tablaC (id) tipo char(1); folio integer; }PRIMARY KEY (tipo, folio) El problema que le digo a mi amigo, es que si necesito unos datos de tablaD filtrada por anio y proyectoA tengo que hacer muchos INNER JOIN -((tablaA inner JOIN tablaB) inner join tablaC) inner join tablaD-, y yo se que me van a pedir muchos reportes con esas caracteristicas. Y como estas los costos de almacenaje no representa mucho el gasto espacio de disco duro y si mas rapides si guardo esos 2 campos (ejercicio y proyectoA) en la tablaD. haz los cambios que te digo y me cuentas... Hare los cambios y te cuento despues, ¿quién tiene rázon? ¿cómo sería lo mas rapido/mejor.? lo mas rapido no siempre es lo mejor y viceversa... mejor es hacerlo primero bien y luego preocuparse de que responda rapido... despues de todo, la optimizacion prematura es la raiz de todos los males (no recuerdo quien lo dijo)... Una ultima duda con la rapidez, igual y por eso estoy mal con mis diseños. Si hago una vista de tablaC que jale el dato de tablaA para tomar el anio, cuanta carga se para la base. claro que usario indices. Mejor muestro como estan realmente las tablas importantes. Ahorita el programa se usa en solo una oficina, pero lo quiero hacer pensando en que se pueda usar en varias oficinas. que es el campo ures. ejercicio es el año. CREATE TABLE proyecto ( id serial NOT NULL, proyecto_nombre character(120) NOT NULL, monto numeric(12,2) NOT NULL DEFAULT 0, usado numeric(12,2) NOT NULL DEFAULT 0, inicio date NOT NULL, fin date NOT NULL, ejercicio integer NOT NULL, proyecto character varying(10) NOT NULL, ures character varying(10) NOT NULL, programa character varying(10) NOT NULL, eje character varying(10) NOT NULL, tipo_proyecto character varying(10) NOT NULL, justificacion text NOT NULL, objetivo_general text NOT NULL, objetivo character varying(10), fondo_1101 numeric(12,2) NOT NULL DEFAULT 0, fondo_1102 numeric(12,2) NOT NULL DEFAULT 0, CONSTRAINT pk_proyecto PRIMARY KEY (proyecto), CONSTRAINT fk_proyecto_eje FOREIGN KEY (eje) REFERENCES eje (eje) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_proyecto_ejercicio FOREIGN KEY (ejercicio) REFERENCES ejercicio (ejercicio) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_proyecto_objetivo FOREIGN KEY (objetivo) REFERENCES objetivo (objetivo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_proyecto_programa FOREIGN KEY (programa) REFERENCES programa (programa) MATCH SIMPLE ON UPDATE
[pgsql-es-ayuda] OT: mejores practicas
Platicando con un amigo sobre como es mejor diseñar una base de datos tenemos un punto de desacuerdo. Yo digo que siguiendo la normalización en ocaciones puede ser un problema creo (ó es un mal diseño mio tal vez). Por ejemplo siguiendo la normalización (la estructura es solo para dar una idea): tablaA { id serial; proyectoA integer PRIMARY KEY; proyectoA_nombre text; anio integer; } tablaB { id serial; proyectoA integer reference tablaA (proyectoA) proyectoB integer PRIMARY KEY fecha date; fondo varchar(10); cuenta varchar(10); } tablaC { id serial; anio integer; --es el mismo que en tablaA proyetoC integer; --es un consecutivo que empieza --en 1 cada año, no se debe repetir --por eso se combina con anio. proyectoB integer REFERENCE tablaB (proyectoB); }PRIMARY KEY (anio, proyectoC) tablaD { id serial; tablaC_id integer REFERENCE tablaC (id) tipo char(1); folio integer; }PRIMARY KEY (tipo, folio) El problema que le digo a mi amigo, es que si necesito unos datos de tablaD filtrada por anio y proyectoA tengo que hacer muchos INNER JOIN -((tablaA inner JOIN tablaB) inner join tablaC) inner join tablaD-, y yo se que me van a pedir muchos reportes con esas caracteristicas. Y como estas los costos de almacenaje no representa mucho el gasto espacio de disco duro y si mas rapides si guardo esos 2 campos (ejercicio y proyectoA) en la tablaD. pero para hacer esto y asegurar integridad referencial tendria que tener otra referencia de tablaD a tablaA.y aqui es donde dice mi amigo que eso lo hace lento. y dificil de mantener despues. ¿quién tiene rázon? ¿cómo sería lo mas rapido/mejor.? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] problema de diseño de multiples fk
Pregunta a la lista si me pueden ayudar a saber si postgresql soporta lo que quiero o tengo que cambiar mi diseño de tabla. Tengo 3 tablas con casi los mismo campos: contrato, (recurso) humano, (recurso) material. En estas guardo los recursos con los que voy a contar en el año, donde tengo el _fondo_ de donde tomo dinero, el _monto_ y las quincenas inicial y final cuando se va a gastar/recibir el dinero. En contrato tengo que el _monto_ se debe dividir en partes iguales el rango de quincenas que ponga. lo normal es de la 1 (1ra de enera) a la 24 (2da de diciembre). Si el monto es $120,000 entonces cada quincena debe ser de $5,000. En humano es igual que en contrato. En material cambia, porque debo indicar la cantidad en cada quincena que puede ser diferente, pero al final la suma debe ser igual al _monto_. Yo queria tener una sola tabla _quincena_ donde guardar los datos de las otras 3 tablas y que solo tubiera un campo que indicara a donde hacia referencia, pero ya que lo pense creo que no se puede. Es decir que la tabla quincena tuviera 3 llaves foraneas del mismo campo de identificador a cada tabla pero no se puede hacer eso. Ahora ya pensadolo un poco mejor se me ocurrio tener una tabla principal con los campos comunes y mis otras 3 tablas que heredaran se la comun y se le agregue el campo extra a cada una que no tiene que ver con las otras tablas. este campo tiene una llave foranea a otra tabla. Y ya con esto ahora si la tabla _quincena_ que tendria su llave foranea a la comun. La pregunta es que como nunca he trabajado con herencia ¿se puede hacer lo que quiero? Quiero que en la tabla comun se guarden todos los datos para que la de quincena este referenciada a la comun. [diseño actual] Contrato--v Humano- QUINCENA Materia^ [diseño nuevo] Contrato Humano Materia | || ||--| | V Comun | V Quincena Uso la version 8.3.4 Gracias de antemano y ojala si me puedan ayudar a ver la solución mejor a mi problema. CREATE TABLE contrato ( id serial NOT NULL, contrato character varying(10) NOT NULL, contrato_nombre character varying(200) NOT NULL, fondo character varying(10) NOT NULL, monto numeric(12,2) NOT NULL, usado numeric(12,2) NOT NULL DEFAULT 0, inicial integer NOT NULL, final integer NOT NULL, actividad character varying(10) NOT NULL, CONSTRAINT pk_contrato PRIMARY KEY (contrato), CONSTRAINT fk_contrato_actividad FOREIGN KEY (actividad) REFERENCES actividad (actividad) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_contrato_fondo FOREIGN KEY (fondo) REFERENCES fondo (fondo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT ck_contrato_inicial_final CHECK (inicial = 1 AND final = 24 AND inicial = final) ) CREATE TABLE humano ( id serial NOT NULL, captura time with time zone NOT NULL DEFAULT now(), humano character varying(10) NOT NULL, humano_nombre character varying(200) NOT NULL, categoria character varying(10) NOT NULL, fondo character varying(10) NOT NULL, porcentaje integer NOT NULL DEFAULT 0, actividad character varying(10) NOT NULL, monto numeric(12,2) NOT NULL, usado numeric(12,2) NOT NULL DEFAULT 0, inicial integer NOT NULL, final integer NOT NULL, CONSTRAINT pk_humano PRIMARY KEY (humano), CONSTRAINT fk_humano_actividad FOREIGN KEY (actividad) REFERENCES actividad (actividad) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_humano_categoria FOREIGN KEY (categoria) REFERENCES categoria (categoria) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_humano_fondo FOREIGN KEY (fondo) REFERENCES fondo (fondo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) CREATE TABLE material ( id serial NOT NULL, captura time with time zone NOT NULL DEFAULT now(), material character varying(10) NOT NULL, material_nombre character varying(200) NOT NULL, cuenta character varying(10) NOT NULL, fondo character varying(10) NOT NULL, monto numeric(12,2) NOT NULL, usado numeric(12,2) NOT NULL DEFAULT 0, actividad character varying(10) NOT NULL, inicial integer NOT NULL, final integer NOT NULL, CONSTRAINT pk_material PRIMARY KEY (material), CONSTRAINT fk_material_actividad FOREIGN KEY (actividad) REFERENCES actividad (actividad) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_material_cuenta FOREIGN KEY (cuenta) REFERENCES cuenta (cuenta) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT fk_material_fondo FOREIGN KEY (fondo) REFERENCES fondo (fondo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) CREATE TABLE fondo ( id integer NOT NULL DEFAULT
[pgsql-es-ayuda] [OT] nombre para campos comunes
Estoy en mis momentos de reflexión y me salio la duda ¿qué nombres son los mas comunes que se usan para ciertas necesidades? | Nombre | Descripcion | Campo| | --|- | orden | campo tipo serial. para el consecutivo, que lleva el orden de cuando se insertaron las tuplas. antes usaba ID pero queria algo mas en español y descriptivo. | fecha_alta | campo tipo date. para saber cuando se inserto la tupla. nunca he necesitado la hora, para eso seria ¿fechahora_alta? | activo | campo boolean para saber si el dato debe ser mostrado en ciertos casos. tambien lo he usado INT (1 verdadero / 0 falso) porque m$sql 2000 no soporta bool | condicion | campo tipo char(1). parecido a 'activo', los valores que uso son 'A' para activo, 'S' para suspendido y 'C' para candelado. | rfc_curp | campo tipo varchar(15). en México son los 2 nombres (se esta cambiando para usar solo la curp) de la clave unica de persona. | ultima_modificacion | campo tipo date. el nombre dice para que es. igual estoy pensado que no seria malo hacerlo timestamp. | region_nombre | para los catalogos. 'region' es un ejemplo, varia dependiendo el caso. 'region' es la llave primaria del catalogo y 'region_nombre' es la descripción. asi si tengo que hacer un join y ambas tablas tienen el campo una descripcion no modifico el nombre de la columna y uso el mismo en todo el sistema. | observacion | tipo text. una descripción mas larga del registro. como para un catalogo de productos. ¿qué nombre de campos se les hace mejor para indicar un periodo de fechas, inicial y final o empezo y termino o desde y hasta? ¿pára guardar solo el año, usan año (poco aconsejable creo), ano o anio? para las foreng key uso fk_nombretabla_campo(s) primary key uso pk_nombretabla_campos(s) index uso idx_nombretabla_campos(s) ¿ustedes cómo los nombran? -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] acerca de schemas
Estoy diseñando una aplicación y en la base de datos lo quiero manejar con esquemas, yo seria el super-administrador de toda la base de datos y tendría usuarios administrador por cada esquema. A la hora de iniciar sesión un usuario modifico su search path al esquema que le corresponde solamente. Todo esto debido a que los otros administradores deben poder sacar reportes de sus empresas, pero no pueden tener acceso a la información de las otras. Y para no complicarme con mantener mas de una base de datos, se me hizo mejor manejar esquemas. Para casos como estos es el uso de los esquemas ¿o para qué se crearon? El 17 de noviembre de 2008 5:21, Alvaro Herrera [EMAIL PROTECTED]escribió: Carlos Bazán escribió: Me refiero a que tengo una base de datos ej. empresas y dentro de esta base de datos quiero tener mas de 1000 empresas con sus tablas, dominios, funciones etc. (las que son iguales para todas las empresas) pero en diferentes schemas y así tener todo ordenado. Esta es una idea muy mala; en esencia, reemplazas una columna extra para el ID de empresa en las tablas (lo cual es un dato) con una capa de esquemas (los cuales son meta-datos). Es muy malo como técnica de modelamiento, y posiblemente también sea más lento. La aplicación también va a tener peor código, porque tendrás algo así: select * from $empresa.tabla where ... cuando podrías tener select * from tabla where empresa = $id and ... -- Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3, W 73º 15' 24.7 Escucha y olvidarás; ve y recordarás; haz y entenderás (Confucio) -- TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] retorno de sentencia
insert if FOUND then http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS 2008/11/18 Leonardo A. Marchese [EMAIL PROTECTED] Hola, Alguien me podría decir como se pone el retorno de una sentencia sql (ej. insert ...) dentro de un procedimiento almacenado o función dentro del administrador de PostgreSQL. Les pongo un ejemplo similar a lo que quiero, pero en otro lenguaje: insert into (..) values (...) ; if sqlca.sqlcode = 0 then ... else ... end if Gracias. -- - Leonardo A. Marchese Lic. en Informática -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] acerca de schemas
El 18 de noviembre de 2008 10:18, Alvaro Herrera [EMAIL PROTECTED]escribió: Miguel Beltran R. escribió: Estoy diseñando una aplicación y en la base de datos lo quiero manejar con esquemas, yo seria el super-administrador de toda la base de datos y tendría usuarios administrador por cada esquema. No existe el concepto de administrador por esquema. Tienes que darle privilegios al usuario en cada tabla. Lo dije asi, pero claro que es asignar a un usuario admin1 derecho de poder hacer todo (insert, select, etc. sin with grand option) a las tablas del esquema1, y al usuario admin2 derecho de hacer todo para las tablas del esquema2 A la hora de iniciar sesión un usuario modifico su search path al esquema que le corresponde solamente. Esa no es una restricción que aporte nada a la seguridad, porque el usuario puede cambiarlo fácilmente. No es para seguridad, es mas bien para que no lo tengan que hacer manualmente el select * from esquema2.mitabla . Solo que pongan select * from mitabla (con un search path=esquema2). La seguridad seria con el punto anterior. Todo esto debido a que los otros administradores deben poder sacar reportes de sus empresas, pero no pueden tener acceso a la información de las otras. Y para no complicarme con mantener mas de una base de datos, se me hizo mejor manejar esquemas. Mira veil: http://pgfoundry.org/projects/veil/ Lo estoy checando, gracias -- Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8 The important things in the world are problems with society that we don't understand at all. The machines will become more complicated but they won't be more complicated than the societies that run them.(Freeman Dyson) -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] Pregunta sobre error en disparador
OLD: existe en UPDATE y DELETE NEW: existe en INSERT y UPDATE Sin importar si es BEFORE o AFTER, pero si es en after y regresas algo, simplemente se ignora. (1) Tu quieres qué marque error antes de que borre o actualize? entonces es before. Gracias por la respuesta pero aun cambiando la declaración me sigue marcando el error: ERROR: record new is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function movement_trg line 20 at if STATEMENT: DELETE FROM M_Movement WHERE M_Movement_ID IN ('100') AND AD_Client_ID IN (100) AND AD_Org_ID IN (100); Aqui se ve que quieres borrar un regristo y en la funcion tienes COALESCE(OLD.MOVEMENTDATE, v_DateNull) COALESCE(NEW.MOVEMENTDATE, v_DateNull) pero como lo estas llamando desde un delete no existe NEW, a menos que con el primer IF sea un valor que pones cuando actualizas, entonces estaria en NEW (1) http://www.postgresql.org/docs/8.3/static/plpgsql-trigger.html -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] consecutivo
Esto te puede ayudar. http://archives.postgresql.org/pgsql-es-ayuda/2004-04/msg00300.php 2008/11/13 Andres Felipe S. [EMAIL PROTECTED] Hola amigos listeros, ¡¡ Tengo una pregunta, espero me puedan hayudar me piden que a la consulta que le ponga a mi tabla, le ponga un consecutivo empezando desde 1 y no tengo ni idea de como colocarle un consecutivo osea la tabla es TABLA Documento - Nombre - Fecha 1545455Andres - 15082008 1548774Tatiana - 14042009 ETc y que la respuesta a la consulta sea Num- Documento - Nombre - Fecha 1 1545455Andres - 15082008 2 1548774Tatiana - 14042009 3 ETc Gracias -- ¡Pasa del Pendrive! Skydrive almacena hasta 5 GB online gratishttp://www.todoslospendrivesvanalcielo.com/ -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
[pgsql-es-ayuda] OT: Lo que viene en el proximo pgAdmin 1.9
Se me muy bien la nueva versión http://postgresonline.com/journal/index.php?/archives/73-PgAdmin-III-1.9-First-Glance.html -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] error al crear base de datos....
Cuando se creo el cluster del servidor, se hizo con una configuracion es_ES.utf8 (1) y por eso no te deja. Si alguién sabe espeficicamente porque no deja, me gustaria saber, porque el latin uno esta dentro de lo que puede usar utf-8 ¿o no? La solución rapida seria CREO volver a inicializar tu directorio con locale=es_ES.LATIN1 o tal vez intentar desde psql un CREATE DATABASE (2) 1.- http://www.postgresql.org/docs/8.3/interactive/app-initdb.html 2.- http://www.postgresql.org/docs/8.3/static/sql-createdatabase.html 2008/11/6 Eduardo Arévalo [EMAIL PROTECTED] Hola a todos: estoy tratando de crear na base de datos con caracteres en español. utilizando el comado: -bash-3.2$ ./createdb -E LATIN1 sig_3 pero me sale el siguiente error Password: createdb: database creation failed: ERROR: encoding LATIN1 does not match server's locale es_ES.utf8 DETAIL: The server's LC_CTYPE setting requires encoding UTF8. recien he instalado la versión 8.3 con el siguiente comando ./postgresql-8.3.4-1-linux-x64.bin me podrian dar una pista de solucion gracias -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida
Re: [pgsql-es-ayuda] duda/problema con query y funcion
La verdad no se mucho todavia sobre como interpretar los explain analyze, yo lo que queria era ver si habia una diferencia en los que regresaba y ver poque no te regresaba los mismos datos. Pero no sabia que si la hacias a la funcion te regresaba tan pocos datos. 2008/9/23 Roberto Rodríguez Pino [EMAIL PROTECTED]: 2008/9/23 Miguel Beltran R. [EMAIL PROTECTED]: No se si se pueda pero haz un explian analyze a ambas EXPLAIN ANALYZE SELECT * FROM buscandoError('25-08-2008'); Y nos mandas el resultado por cierto que version de postgres usas? Miguel, muchas gracias por tu ayuda. Jaime ya me ha resuelto la duda. Por cierto (aunque no he leído nunca acerca del Explain Analyze)... que se puede concluir de los explain analyze? Saludos! Roberto -- visita mi weblog! http://trasto.hopto.org [EMAIL PROTECTED] http://softwarelibre.diinf.usach.cl -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 5: ¿Has leído nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html
Re: [pgsql-es-ayuda] Ayuda consulta SQL
Antes de pensar en tu consulta tengo un duda Si es en un intervalo de 15 minutos, tiene que ser lo que cumplan de 2008/06/01 1:00:00 a 2008/06/01 1:14:59 y su promedio. o por cada registro checar los que esten dentro de los 15 minutos siguentes, con tus datos seria, tomando como inicio el de 1:05:00 incluiria el 1:10 y 1:15 y su promedio luego tambien 1:10 incluiria 1:15 y 1:25 y su promedio o cómo? 2008/9/22 Cristián Osorio [EMAIL PROTECTED]: Hola amigos, me encuentro algo aproblemado con una consulta en SQL tengo la siguiente tabla: timestamp| valor - 2008/06/01 1:05:00| 10 2008/06/01 1:10:00| 11 2008/06/01 1:15:00| 12 2008/06/01 1:25:00| 9 2008/06/01 1:35:00| 10 2008/06/01 1:40:00| 10 2008/06/01 1:45:00| 13 2008/06/01 1:55:00| 2 2008/06/01 2:05:00| 10 2008/06/01 2:10:00| 10 2008/06/01 2:15:00| 1 2008/06/01 2:20:00| 123 2008/06/01 2:25:00| 10 2008/06/01 2:30:00| 111 Necesito hacer una consulta que debe calcular el promedio de los valores de acuerdo un intervalo de tiempo. Este intervalo puede ser de a 15, 30 o 60 minutos, en realidad creo que lo que se necesita hacer es una funcion que me retorne un conjunto de resultados, pero no le pego mucho al pgsql. Si alguien puede ayudarme realizando la funcion u orientandome como hacerlo se lo agradecería, si alguien sabe alguna forma de hacerlo con SQL, con alguna instruccion especial de PostgreSql mucho mejor. De antemano, Gracias. -- Saludos, Cristián Osorio M. -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía unregister TuDirecciónDeCorreo a [EMAIL PROTECTED])
Re: [pgsql-es-ayuda] duda/problema con query y funcion
No se si se pueda pero haz un explian analyze a ambas Asi: EXPLAIN ANALYZE SELECT articulo.idarticulo, costoultimo.costoultimo FROM articulo LEFT OUTER JOIN costo USING (idarticulo) LEFT OUTER JOIN (select costo.idarticulo, costoultimo from costo,(select max(idcosto) as idcosto,idarticulo,max (fecha) from costo where fecha='25-08-2008' group by idarticulo) as fechacosto where fechacosto.idcosto = costo.idcosto) as costoultimo USING (idarticulo) where (costo.flag = false and costo.fecha='25-08-2008' and costo.idproveedor is NULL) or (costo.flag=true and costo.fecha='25-08-2008') or (costo.flag = false and costo.fecha='25-08-2008') group by articulo.idarticulo, costoultimo.costoultimo order by idarticulo; y despues un EXPLAIN ANALYZE SELECT * FROM buscandoError('25-08-2008'); Y nos mandas el resultado por cierto que version de postgres usas? El día 23 de septiembre de 2008 14:28, Roberto Rodríguez Pino [EMAIL PROTECTED] escribió: 2008/9/23 Miguel Beltran R. [EMAIL PROTECTED]: Se me ocurre que es algo con las fechas, que no te las interprete igual y por lo tanto no busque en el mismo rango. Cómo pasas la fecha a la funcion? Trata probando mandadola como -MM-AA. Pruebalo en ambas partes, consulta directa y funcion. Tambien checa en tu postgresql.conf que tengas puesto que pueda interpretar la fecha es ese formato. Yo lo tengo datestyle = 'iso, DMY' Hola Miguel, muchas gracias por tu respuesta pero no resultó. Probé poniendo la fecha de varias formas y al parecer no es eso. Probé tanto en la query y la función. Tenia la misma configuración para datastyle, aunque con minsuculas. Lo puse en mayúsculas (aunque no debe influir mucho) pero tampoco hubo cambios. ¿Más pistas? Muy agradecido por más comentario. Saludos! Roberto -- visita mi weblog! http://trasto.hopto.org [EMAIL PROTECTED] http://softwarelibre.diinf.usach.cl -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
Re: [pgsql-es-ayuda] Compatibilidad Visual Basic 6.0
-Como dicen usa ADO en lugar de DAO. -Algunos campos no existen igual en Postgresql. Por ejemplo no esta el campo autoincremento. En PG es un campo entero mas un ... - no me acuerdo como llamarlo ahora - una funcion que cambia el valor. Tambien se le conoce como campo tipo SERIAL. -Existen varias formas de accesar a Postgresql (http://www.postgresql.org/download/products/2) creo que para con VB6 seria con Postgresql OLE DB ó psqlODBC. Desconosco cual convenga mas en tu caso. -Algo util es el uso de schemeas (si se escribe asi?) que te sirve para tener tablas que se llaman igual pero en diferente nombre de espacio. Se necesitar estar seguro cuando utilizarlo. -Usa la versión mas reciente. Busca en internet reviews para ver las nuevas caracteristicas y piensen en que les puede usar. -Existe una carpeta de contribs donde se incluyen utilerias muy buenas. -si usas IIF, lo mas cercano es CASE. Hace como 1 semana se hablo de este comando y como simularlo creando tu propia funcion. -Debes checar como vas a usar las fechas, Existen PG diferentes tipos segun sea la necesidad. -Creo que existe una utileria que pasa los mdb a access. El día 17 de septiembre de 2008 10:25, GRUPO SIC, S.A. DE C.V. [EMAIL PROTECTED] escribió: Saludos cordiales, somos desarrolladores de sistemas en la CD de México. Queremos saber la compatibilidad para emigrar un sistema desarrollado en visual Basic 6.0 (utilizamos base datos ACCESS) y utilizar su Postgre SQL como servidor de base de datos. Atentamente Ing Efraín Caporali C. TEL (0155) 5970-4698 Mail: [EMAIL PROTECTED] -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
Re: [pgsql-es-ayuda] Nuevas presentaciones en la wiki
Afinamiento de la base de datos -Setear cambiar a Establecer. 2008/7/31 Alvaro Herrera [EMAIL PROTECTED]: Emanuel Calvo Franco escribió: Interesantes y utiles. Necesitamos más documentación en castellano, estoy podrido de leer en ingles :P Same here! -- Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3, W 73º 15' 24.7 El Maquinismo fue proscrito so pena de cosquilleo hasta la muerte (Ijon Tichy en Viajes, Stanislaw Lem) -- TIP 1: para suscribirte y desuscribirte, visita http://archives.postgresql.org/pgsql-es-ayuda -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 7: no olvides aumentar la configuración del free space map
Re: [pgsql-es-ayuda] normalizacion
Apena estoy revisando mis correos y este como dicen esta interesante. Yo en hice algo malo al no aplicar la normalización pero, digo PERO es un sistema con vb6 y access (Hace ya unos ~ 10 años). Que por lo mal hecha me dio problemas después cuando me pedían que les agregara cosas. Ya después me canse de inventar tanta cosa en el programa, que mejor modifique la base de datos ya con los conocimientos y experiencia de los años. Al estar modificando se me hizo mas fácil que el importe (la suma del importe de factura-productos), porcentaje del impuesto, impuesto en cantidad, porcentaje de descuento, descuento en cantidad, subtotal y total este en la factura. En lugar de tener una consulta que me sume estos datos. En el equipo que se tenia era una perdida de tiempo por todo lo que tardaba. quedabo algo así. importe, % desc, $ desc, subtotal, % impu, $ impu, total 1000, 5,50, 1050,15, 157.5, 1157.5 Esto servia para 1) cuando queria ver los datos de generales de una factura, 2) al hacer los diferentes reportes. En ambos casos despues de hacer el cambio se disminuyo drasticamente el tiempo requerido de los reportes. En estos casos donde el espacio no es un factor como la velocidad si lo veo bien y hasta necesario hacer estos cambios. El día 28 de julio de 2008 5:51, Calabaza [EMAIL PROTECTED] escribió: Este e-mail me vino al privado, lo reenvio: El día 28 de julio de 2008 3:22, David Prieto [EMAIL PROTECTED] escribió: quisiera saber su opinión sobre el asunto q hacen muchos programadores (los cuales tambien diseñan las base d datos) y es q por favor, escribe completo las palabras que no estamos utilizando un móvil... =) en la tabla factura guardan tanto el codigo de cliente, como el nombre y apellidos del cliente. Cómo todos ustedes saben eso rompen con las reglas d normalización. Q opinan uds. sobre ese asunto, a q se deberá esto?? Opino que en muchos muchos casos esto es necesario. Ya se ha comentado que la factura no debe modificar su contenido una vez emitida, y que si el día de mañana tu cliente número 1234 cambia de domicilio, cuando reimprimas la factura debe salir igual que la primera vez. También habrá casos (el típico cliente 9, de clientes varios), que no hace falta tenerlo en la base de datos como cliente, pero que sí que tienes que guardar sus datos en cada factura. MI opinión es que la persona que diseña una bd así no conoce las formas normales, y si las conoce y no las utiliza se puede deber a que: o es un super dba que esta tratando de conseguir algo a cambio de redundancia pero la controla o conoce las formas normales pero no las entiende. =) MI opinión es que un buen diseño de una base de datos pasa por normalizar primero y des-normalizar un poco después. He visto bases de datos intratables por culpa de tanta normalización. davidp. Sin comentarios, porque ya se ha hablado mucho de esto en este hilo. Un abrazo, -- §~^Calabaza^~§ from Villa Elisa, Paraguay A hendu hína: Billy Idol - Rebell Yell http://foxytunes.com/artist/billy+idol/track/rebell+yell -- TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía unregister TuDirecciónDeCorreo a [EMAIL PROTECTED])
Fwd: [pgsql-es-ayuda] Hora del Servidor
Perdon, me falto mandarlo a la lista 2008/7/10 Miguel Beltran R. [EMAIL PROTECTED]: Creo que Alvaro al decir Huso se refiere a esto http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3LEMA=huso ~ horario. 1. m. Geogr. Cada una de las partes en que queda dividida la superficie terrestre por 24 meridianos igualmente espaciados y en que suele regir convencionalmente un mismo horario. 2008/7/10 Alvaro Herrera [EMAIL PROTECTED]: Hugo César escribió: Una cosa mas SET TIMEZONE es una variable de entorno cierto ?? No, una variable de Postgres (la misma que configuras en postgresql.conf, pero esta vez la cambias directamente via la interfaz SQL, y rige solamente para esa sesion). -- Alvaro Herrerahttp://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía unregister TuDirecciónDeCorreo a [EMAIL PROTECTED]) -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida -- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán