Re: [pgsql-es-ayuda] Vacuum
- Mensaje original - > De: "Diego"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Lunes, 5 de Junio 2017 8:43:18 > Asunto: [pgsql-es-ayuda] Vacuum > > Buenos días Postgresistas, > > Hoy les escribo para consultarles sobre una situación que me pasa con > una tabla. > Esta tabla tiene 31 registros y 3 campos, una pk y un indice, después de > un tiempo me doy cuenta que ocupa 595 MBs y 577 MBs de indices. > > Le hice un Vacuum manual a la tabla y arrojo lo siguiente sin reducir el > tamaño: > > Vacuum "a secas" no elimina espacio, mas bien lo reorganiza. Lo que vos queres se logra con VACUUM FULL, o recreandola (en la manera supongo que hiciste). HTH, Gerardo - 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
Re: [pgsql-es-ayuda] Load-balancing con hot-standby
- Mensaje original - > De: "lodopidolo"> Para: pgsql-es-ayuda@postgresql.org, "dir postgresql" > > Enviados: Lunes, 22 de Mayo 2017 8:16:08 > Asunto: [pgsql-es-ayuda] Load-balancing con hot-standby > > Hola, he configurado una sistema hot-standby con synchronous replication > mediante streaming replication. Querría tener una dirección única donde > las peticiones de modificación fueran al servidor primario y las de > consulta se balancearan automáticamente entre cualquiera de los dos. > > Al parecer esto se puede hacer con pgpool, pero no sé si se puede > utilizar pgpool con esta configuración que tengo, ni que otras > alternativas hay para balanceo con hot-standby. > > Un saludo. > Asi es, pgpool es el balancer mas popular para postgres, y viene especialmente preparado para lidiar con esos ambientes de replicacion. Una aclaracion un tanto al margen: Si estas utilizando replicacion *sincronica* con solamente 2 hosts, significa que si la replica se te cae, las transacciones van a quedar a la espera indefinidamente. Por eso, en general, cuando tenes 2 hosts se usa replicacion asincronica. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] calculo preciso de años meses y dias
Me suena a que tiene que ver conque febrero pueda ser año bisiesto, o como ya apuntaron por ahi, al cambio de horario. De todos modos, la resta de fechas pareceria funcionar mejor: postgres=# select '29-04-2017'::timestamp - '15-02-2017', '01-05-2017'::timestamp - '15-02-2017'; ?column? | ?column? --+-- 73 days | 75 days (1 row) HTH Gerardo - Mensaje original - > De: "felix gonzales"> Para: "PostgreSQL" > Enviados: Lunes, 15 de Mayo 2017 10:16:50 > Asunto: [pgsql-es-ayuda] calculo preciso de años meses y dias > > buen día lista, > > Necesito obtener años meses y días precisos. utilizando la función AGE > tengo la dificultad que la primera y ultima linea me devuelve lo mismo, > alguna alternativa? > > select AGE('29-04-2017','15-02-2017'); > select AGE('30-04-2017','15-02-2017'); > select AGE('01-05-2017','15-02-2017'); > > cualquier comentario bienvenido. > > -- > Felix Gonzales > - 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
Re: [pgsql-es-ayuda] Topología Aplicada
- Mensaje original - > De: "Néstor Ramires"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 20 de Abril 2017 11:35:30 > Asunto: [pgsql-es-ayuda] Topología Aplicada > > > Hola. Ante todo, vengo de trabajar en MicroStation Geographics, mi > intención es migrar toda la información a una base de datos postgis > y en ese tramo se me presentó este problema. > Creo que tendras mejor suerte probando en un foro de postgis. Por ej: http://lists.osgeo.org/mailman/listinfo/postgis-users (foro oficial) Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Problemas con permisos.
> > Buenas lista. > > Soy Enrique Llácer, llevo bastante tiempo trabajando con postgreSQL y > hoy me he encontrado con un problema que no consigo solucionarlo ni > encuentro documentación al respecto. > > Estoy usando windows 10 y postgresql 9.5, todas las tablas tienen > Grant All, por lo que todos los usuarios acceden sin problemas. > > GRANT ALL ON TABLE public.mitabla TO postgres; > GRANT ALL ON TABLE public.mitabla TO public; > > el problema me ha sugido al incluir en una función, entre su código, > una instrucción para deshabilitar/habilitar un trigger; este error > lo está dando, también, desde el pgAdmin, siempre que no entre como > superusuario postgres > > > > ERROR: debe ser dueño de la relación mitabla > CONTEXT: sentencia SQL: «ALTER TABLE mitabla DISABLE TRIGGER > mitrigger» > ALTER sirve para los datos de la tabla. Lo que no te deja modificar es la metadata, que es otra cuestion. Podes cambiar el owner de la tabla haciendo ALTER TABLE port_status OWNER TO _usuario_; O bien podes hacer la funcion que mencionas con la clausula SECURITY DEFINER, como dice en https://www.postgresql.org/docs/9.5/static/sql-createfunction.html HTH Gerardo - 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
Re: [pgsql-es-ayuda] Substring y expresiones regulares
- Mensaje original - > De: "baru gerardi"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 23 de Marzo 2017 13:13:29 > Asunto: [pgsql-es-ayuda] Substring y expresiones regulares > > > > > > > > Buenos dias > Necesito extraer de un campo de texto los nros de DNI contenidos en > él. > Sé que los mismos se encuentran luego de la cadena 'DNI:' > > Con substring(texto from 'DNI:') ubico la cadena > > pero necesito que liste de ahí en adelante los nros que encuentre, > teniendo en cuenta: > 1. que desconozco cuantos espacios hay entre 'DNI:' y el primer > dígito y > 2. que puede haber puntos entre los dígitos > > > Desde ya, gracias por la ayuda Que tal una expresion regular para borrar todo lo que *no* sean numeros: select regexp_replace(texto, '[^0-9]', '','g') from tabla; postgres=# select *, regexp_replace(dni, '[^0-9]', '','g') as solo_numeros from dnis; dni | solo_numeros +-- DNI:12.382.712 | 12382712 DNI:12382712 | 12382712 DNI:123827..12 | 12382712 (3 rows) HTH Gerardo - 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
Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Función con select se ejecutar muy lenta comparada con la ejecución de select fuera de la función
- Mensaje original - > De: "José Alberto Sánchez Nieto (Trabajo)"> Para: "Ernesto Lozano" > CC: pgsql-es-ayuda@postgresql.org > Enviados: Miércoles, 21 de Diciembre 2016 15:10:05 > Asunto: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Función con select se ejecutar > muy lenta comparada con la ejecución de > select fuera de la función > > Hola Ernesto, la versión que utilizo es la 9.6.1 y lo que utilizo es > lo siguiente: > - Desde shell: > select * from d_articulo where id_articulo = ‘2097’ > Con el explain plan me dice que utiliza un index scan lo cual es > correcto ya que tengo un índice por ese campo y el tiempo de > ejecución es 0.045ms > > > -Desde función: > CREATE OR REPLACE FUNCTION prueba_velocidad( > v_id_articulo character varying > RETURNS void AS > $BODY$ > DECLARE > vv_reg_articulo record; > BEGIN > EXECUTE ‘SELECT * FROM d_articulo WHERE id_arjticulo = ‘ || > quote_literal($1) > INTO vv_reg_articulo > USING v_id_articulo; > > > RETURN; > END; > $BODY$ > LANGUAGE plpgsql STABLE > COST 100; > ALTER FUNCTION prueba_velocidad(character varying) > OWNER TO valmanar; > > > Y la ejecuto con: select prueba_velocidad(‘2097’) dándome unos > tiempos de 0.229ms > He probado sin el quote_literal simplemente con $1 y tampoco, > evidentemente también probé sin el execute poniendo la query normal > cómo la del shell y sigue dándome unos tiempos muy altos. ¿Qué puede > ser?. > Gracias por la ayuda y saludos. Me suena razonable esos tiempos, porque estas añadiendo un overhead considerable 1) Utilizando pl/pgsql en lugar de SQL, 2) Utilizando EXECUTE Proba haciendo una funcion el SQL, ya que para este caso al menos, usar pl no tiene mucho sentido. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Pgadmin 4
Creo que necesitas configurar el apache para que escuche en otro puerto [1], aunque no termino de entender lo de "me choca" [1] https://httpd.apache.org/docs/2.4/vhosts/examples.html HTH Gerardo - Mensaje original - > De: "Javier Lugo Porras"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Miércoles, 23 de Noviembre 2016 12:06:52 > Asunto: [pgsql-es-ayuda] Pgadmin 4 > > > > Buen dia grupo...estoy probando el pgadmin 4 pero x default usa el > port 80 ... rebusque la configuracion del apache y python...no > encontre donde cambiarlo...lei la documentacionpero no muestra > donde cambiar el puerto ...me choca con mis aplicaciones > existentes.. > > Si alguien sabe...welcome!!! > - 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
Re: [pgsql-es-ayuda] Permisos en cluster con varias bases
- Mensaje original - > De: "Federico Sansone"> Para: "POSTGRES" > Enviados: Jueves, 3 de Noviembre 2016 13:54:48 > Asunto: [pgsql-es-ayuda] Permisos en cluster con varias bases > > > > Buen día estimados, les pido ayuda para pensar una solución a un > problema de diseño. > Tenemos la necesidad de armar un cluster que va a recibir varias > bases pequeñas de distintos usuarios y no tenemos posibilidad de > aislar los entornos a nivel infraestructura. > > Si quisiéramos que los usuarios vean su base y solo su base y no las > demás que opciones tenemos? > > Usar Schemas es una opción? Entiendo que si hay dos tablas que se > llaman igual en los distintos Schemas vamos a tener que modificar > las aplicaciones para aclarar el Schema y la tabla, incluso si lo > ponemos en el search_path, o estoy equivocado? > > Se pueden separar los logs por base? > > Muchas gracias! > Si tenes un schema por cada usuario, podes hacer un "ALTER USER usuario1 set search_path TO schema_user1" Y asi para los demas. Asi cada usuario ya tiene el search_path por default y no hace falta que modifiques mucho las apps. Otra opcion es una base por usuario. Asi la separacion es mas "de verdad", aunque un clavo si tenes que actualizar datos en tablas en comun para todos los clientes. Si queres separar los logs por base, entonces vas a necesitar una instancia de postgres por cada usuario (escuchando en diferentes puertos) HTH Gerardo - 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
Re: [pgsql-es-ayuda] Funcion con parametros
Simplemente debe existir una version de ufp_lista_ccosto(), sin parametros de entrada declarados. Podes comprobarlo haciendo \df ufp_lista_ccosto en psql Cuantas funciones te muestra? Si adivino bien, entonces te va a mostrar al menos 2 versiones. Y bueno, en todo caso borra las versiones de la funcion que no necesites. HTH Gerardo - Mensaje original - > De: "Felipe Araoz Ramos"> Para: "PostgreSQL-foro" > Enviados: Domingo, 30 de Octubre 2016 21:20:20 > Asunto: [pgsql-es-ayuda] Funcion con parametros > > > Buena noche amigos > > > He hecho una funcion simple que me lista una tabla filtrando por un > campo, sin embargo cuando ejecuto la funion sin paramtros tambien me > la muestra, > deberia ser asi? > > > > > > CREATE OR REPLACE FUNCTION ufp_lista_ccosto (IN character) > RETURNS TABLE(t_elem character varying, t_des1 character varying, > t_area character varying) AS > $BODY$ > declare > x_empr alias for $1; > begin > return query > SELECT ccosto.t_elem,ccosto.t_des1,ccosto.t_area > FROM fpcost ccosto > where ccosto.t_empr=x_empr > ORDER BY ccosto.t_elem; > end; > $BODY$ > LANGUAGE plpgsql VOLATILE > COST 100 > ROWS 1000; > > > cuando ejecuto > SELECT * from ufp_lista_ccosto('01') me mestra filtrando > > > > SELECT * from ufp_lista_ccosto(), me mestra todo > > > > > > > > > > > > > > Felipe Araoz Ramos > RPM #941990605 / 941990605 > > Lima-Perù > > > > - 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
Re: [pgsql-es-ayuda] Consulta quizas de novato
- Mensaje original - > De: "Aland Laines"> Para: "POSTGRES" > Enviados: Miércoles, 12 de Octubre 2016 19:50:48 > Asunto: [pgsql-es-ayuda] Consulta quizas de novato > > > > > > Hola compañeros, tengo dos tablas > > dependencias > > id dependecia > > 1 nombre1 > > 2 nombre2 > 3 nombre3 > > > codigos > > id codigo > > 1 codigo1 > 2 codigo2 > 3 codigo3 > 4 codigo4 > 5 codigo5 > 6 codigo6 > 7 codigo7 > 8 codigo8 > > > > > > > quiero combinar estas dos tabla en un vista de esta forma: > > > nombre codigo > > = > > nombre1 codigo1 > nombre1 codigo2 > nombre1 codigo3 > nombre1 codigo4 > nombre1 codigo5 > nombre1 codigo6 > nombre1 codigo7 > nombre1 codigo8 > nombre2 codigo1 > nombre2 codigo2 > nombre2 codigo3 > nombre2 codigo4 > nombre2 codigo5 > nombre2 codigo6 > nombre2 codigo7 > nombre2 codigo8 > nombre3 codigo1 > nombre3 codigo2 > nombre3 codigo3 > nombre3 codigo4 > nombre3 codigo5 > nombre3 codigo6 > nombre3 codigo7 > nombre3 codigo8 > > > Creo que estamos hablando del producto cartesiano de ambas tablas. Seria algo como SELECT dependencia, codigo from dependencias cross join codigo; HTH Gerardo - 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
Re: [pgsql-es-ayuda] pg_dumpall desde maquina remota
- Mensaje original - > De: "Kernel"> Para: "Ayuda" > Enviados: Martes, 20 de Septiembre 2016 4:52:07 > Asunto: [pgsql-es-ayuda] pg_dumpall desde maquina remota > > > Hola estoy intentando hacer un backup completo de un gestor desde una > maquina en remota y algo > > no debo de estar haciendo bien , me explico : > > > Maquina principal 192.168.1.1 > Maquina remota 192.168.2.1 > > pg_hba.conf de la maquina principal > > # IPv4 local connections: > local all all trust > # IPv6 local connections: > hostall all 127.0.0.1/32 trust > hostall all ::1/128 trust > host all prueba 192.168.1.1 255.255.255.255 trust > host all all192.168.2.1 255.255.255.255 trust > > Password del usuario prueba es prueba > > desde la maquina principal ejecuto > > pg_dumpall -U prueba -s -f /tmp/DBs.sql (ok) > pg_dump dbdatos -U prueba -s -f /tmp/DBdatos.sql (ok) > > todo esto lo ejecuto sin problemas , no me pide ni password ni nada > > desde la remota 192.168.2.1 , ejecuto : > > psql dbdatos -h 192.168.1.1 -U prueba (ok sin problemas no > pide > password ) > > pg_dumpall -h 192.168.1.1 -U prueba -s -f /tmp/DBs.sql > (se > queda parado, no pide password) > pg_dump dbdatos -h 192.168.1.1 -U prueba -s -f /tmp/DBdatos.sql >(se > queda parado, no pide password) > > > He probado a crear el fichero /home/prueba/.pgpass , con permisos > 600, > pero nada > > 192.168.1.1:5432:dbdatos:prueba:prueba > Que pasa si lo sacas por STDIN? - 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
Re: [pgsql-es-ayuda] ¿Existen problemas cuando una BD es frecuentemente modificada en su estructura?
- Mensaje original - > De: "Arturo"> Para: "Postgresql" > Enviados: Viernes, 2 de Septiembre 2016 11:36:02 > Asunto: [pgsql-es-ayuda] ¿Existen problemas cuando una BD es frecuentemente > modificada en su estructura? > > Buenos días: > > Tengo una duda, por condiciones que no puedocambiar, tengo que hacer, > y he hecho, muchas modificaciones en la estrctura de bases de datos > que ya están en funcionamiento (en producción), es decir he creado > nuevas tablas, agregado y quitado columnas a tablas existente, > cambiado agregado y borrado funciones. > > Aunque la base de datos sigue funcionando normalmente, solo he visto > un poco mermada la velocidad pero se lo atribuyo al creciente numero > de datos. > > Mi pregunta es: > ¿De qué manera afecta todas estas modificaciones a una base de datos > en producción? > > ¿Debería levantar un backup y eliminar la base de datos original, y > asi obtener una base de datos con todas las estructuras creadas "de > una sola vez"? > > ¿Sería esto beneficioso de alguna manera? Bueno, levantar un backup (hecho con pg_dump) te dejara las tablas e indices "limpitos" de la suciedad tipica que se junta con el tiempo en cualquier base de datos, equivalente a hacer un "vacuum full" y un reindex de todas las bases. HTH Gerardo > > Agradezco su tiempo cualquier respuesta, sugerencia o experiencia > previa compartida será, como es obvio, muy agradecida. > > -- > Arturo Munive > > - > 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
Re: [pgsql-es-ayuda] Ayuda con función...
1) Creo que tu profesor de "bases de datos" se quedo en Pascal. 2) Con que argumento estas invocando a esta funcion? - Mensaje original - > De: "Carlos T. Groero Carmona"> Para: "Lista PostgreSql" > Enviados: Jueves, 25 de Agosto 2016 21:42:38 > Asunto: [pgsql-es-ayuda] Ayuda con función... > > > Hola lista, ante todo gracias por cualquier comentario o > sugerencia... > Tengo esta función que tiene como parámetro de entrada un número, y > luego devuelve ese número invertido...ejemplo...entro el 531 y tiene > que devolver el 135, la función o ejercicio tiene como principal > características que no puedo usar ningún tipo de función o tipo de > dato para cadena...solo puedo usar tipos de datos y funciones > numéricas...ya la hice...y cuando la debugeo me funciona bien, pero > cuando la ejecuto me devuelve este error: > > > ERROR: invalid input syntax for integer: "31." > CONTEXT: PL/pgSQL function some_user.reverse_order(integer) line 18 > at assignment > > > la función es la siguiente... > > > > CREATE OR REPLACE FUNCTION some_user.reverse_order ( > var integer > ) > RETURNS integer AS' > DECLARE > var_lgh integer ; > var_div integer :=$1::integer; > var_s integer :=1; > result_e integer:=0; > tf BOOLEAN := true; > var_x integer; > lth integer :=trunc(log($1))+1; > -- variable_name datatype; > BEGIN > if $1>0 then > BEGIN > WHILE tf LOOP > var_x:=lth-var_s; > var_lgh:=div(var_div,power(10.0,var_x)); -- dividendo > result_e:=result_e+var_lgh*power(10,var_s-1); > var_div:=mod(var_div,power(10.0,var_x)); -- resto > var_s:=var_s+1; > IF var_s>lth THEN > tf:=false; > end if; > END loop; > > END; > ELSE > IF $1=0 THEN > RAISE NOTICE ''The entered parameter is zero, please provide a > greater than zero value.''; > ELSE > RAISE EXCEPTION ''The entered parameter is less than zero, please > provide a greater than zero value.''; > end if; > end if; > return result_e::integer; > END; > 'LANGUAGE 'plpgsql' > VOLATILE > CALLED ON NULL INPUT > SECURITY INVOKER > COST 100; > > > una vez más gracias por cualquier comentario... > > > Carlos - 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
Re: [pgsql-es-ayuda] postgresql.conf
> > > > por medio del presente agradezco su tiempo y su atencion, tengo dudas > acerca de mi archivo de configuracion, mi servidor es windows server > enterprice service pack 1 y tiene 6GB de ram. > > la aplicacion que se conecta a el tiene problea y llena la memoria > virtual de su servidor de aplicaciones, en la tabla de bloqueos me > muestra unas consultas que quedan en "idle in transaction" > > Entonces primero tenes que revisar ese servidor de apps, y buscar ahi pistas de por que se queda sin memoria. Gerardo - 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
Re: [pgsql-es-ayuda] exportar datos concatenados
Es mas, luego de tomar mi cafe creo que que hacer un dump | restore de esa tabla haria lo que necesitas. O sea si tu objetivo es transportar la tabla completamirate las ayudas de pg_dump y pg_restore (son los comandos que usa internamente pg_admin para hacer/restaurar backups) HTH Gerardo - Mensaje original - > De: "Gerardo Herzig" <gher...@fmed.uba.ar> > Para: eenriq...@cav.desoft.cu > CC: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 28 de Julio 2016 10:51:42 > Asunto: Re: [pgsql-es-ayuda] exportar datos concatenados > > Creo que haciendolo en SQL te va a resultar engorroso. Si entendi > bien tu consigna, entonces yo haria un pg_dump, y luego trabajaria > esa resultante con sed o algo asi para limpiar un poco la salida. > > HTH > Gerardo > > - Mensaje original - > > De: eenriq...@cav.desoft.cu > > Para: pgsql-es-ayuda@postgresql.org > > Enviados: Jueves, 28 de Julio 2016 10:32:32 > > Asunto: [pgsql-es-ayuda] exportar datos concatenados > > > > Hola amigos. > > Estoy prensentando un problema y les escribo porque quizas alguno > > de > > ustedes ha tenido la misma situacion y me pueda ayudar. La cuestion > > es que tengo una tabla log donde guardo por cada tabla los > > registros > > que se han modificado en la base de datos, y debo tener una funcion > > que me devueva una cadena sql con los registros que estan en la > > tabla log, para luego ejecutar esa consulta en otra bd. Estas 2 > > bases de datos no tienen conectividad entre ellas. > > > > la tabla log tiene esta definicion > > > > CREATE TABLE public.actualizacion > > ( > > id integer NOT NULL DEFAULT > > nextval('actualizacion_id_seq'::regclass), > > id_elemento integer NOT NULL, > > fecha timestamp without time zone NOT NULL, > > operacion integer NOT NULL, > > tabla character varying(50) NOT NULL, > > estado integer NOT NULL DEFAULT '-1'::integer, > > CONSTRAINT "PK33" PRIMARY KEY (id) > > ) > > WITH ( > > OIDS=FALSE > > ); > > > > El resultado que me tendria que arrojar la funcion seria por > > ejemplo > > insert into pais (id,nombre) values (1,'a'),(2,'b'),(3,'c');insert > > into provincia (id,nombre,id_pais) values (1,'x',1),(2,'y',1) > > > > Basicamente debo hacer lo mismo que hace el pgadmin para hacer > > backups y luego concatenar las sentencias. Es un trabajo muy > > complejo y quizas alguien lo ha tenido que implementar y me pueda > > asesorar. > > > > Muchas gracias a todos por su atencion. > > - > 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
Re: [pgsql-es-ayuda] exportar datos concatenados
Creo que haciendolo en SQL te va a resultar engorroso. Si entendi bien tu consigna, entonces yo haria un pg_dump, y luego trabajaria esa resultante con sed o algo asi para limpiar un poco la salida. HTH Gerardo - Mensaje original - > De: eenriq...@cav.desoft.cu > Para: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 28 de Julio 2016 10:32:32 > Asunto: [pgsql-es-ayuda] exportar datos concatenados > > Hola amigos. > Estoy prensentando un problema y les escribo porque quizas alguno de > ustedes ha tenido la misma situacion y me pueda ayudar. La cuestion > es que tengo una tabla log donde guardo por cada tabla los registros > que se han modificado en la base de datos, y debo tener una funcion > que me devueva una cadena sql con los registros que estan en la > tabla log, para luego ejecutar esa consulta en otra bd. Estas 2 > bases de datos no tienen conectividad entre ellas. > > la tabla log tiene esta definicion > > CREATE TABLE public.actualizacion > ( > id integer NOT NULL DEFAULT > nextval('actualizacion_id_seq'::regclass), > id_elemento integer NOT NULL, > fecha timestamp without time zone NOT NULL, > operacion integer NOT NULL, > tabla character varying(50) NOT NULL, > estado integer NOT NULL DEFAULT '-1'::integer, > CONSTRAINT "PK33" PRIMARY KEY (id) > ) > WITH ( > OIDS=FALSE > ); > > El resultado que me tendria que arrojar la funcion seria por ejemplo > insert into pais (id,nombre) values (1,'a'),(2,'b'),(3,'c');insert > into provincia (id,nombre,id_pais) values (1,'x',1),(2,'y',1) > > Basicamente debo hacer lo mismo que hace el pgadmin para hacer > backups y luego concatenar las sentencias. Es un trabajo muy > complejo y quizas alguien lo ha tenido que implementar y me pueda > asesorar. > > Muchas gracias a todos por su atencion. - 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
Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ
> estaba usando collate C, debido a que si no lo pongo, el ordenamiento > queda asi > ALVARES > DE LA CRUZ > DELGADO > DE TRINIDAD > FONSECA > MENDOZA > > > Debiendo estar los q marque en negristas, juntos. al usar es_AR los > deja de la manera anterior Ah pero...esa inquietud (de los espacios) no es la misma que la inquietud original del primer mail! Tambien dijiste que la collation es_AR no ordenaba correctamente las ñ...Por favor para la proxima, clarifica mejor tus preguntas, asi tendras respuestas mas precisas. Gerardo - 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
Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ
Aha, parece que el problema esta en las locale. Tendrias que preguntar en algun foro de centos, seguramente haya algun parche para la version de locale que estes usando, o debas actualizar. Saludos Gerardo - Mensaje original - > De: "Eveling Velásquez" <lings...@yahoo.es> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Pgsql-es-ayuda" <pgsql-es-ayuda@postgresql.org> > Enviados: Viernes, 1 de Julio 2016 13:32:57 > Asunto: Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ > > > > Hola > > > el resultado es el siguiente > > > cat /orden > ALVARES > DE LA CRUZ > DE TRINIDAD > ÃRINDA > FONSECA > MENDOZA > NORORI > OSORIO > > > > > sort /orden > ALVARES > DE LA CRUZ > DE TRINIDAD > FONSECA > MENDOZA > NORORI > ÃRINDA > OSORIO > > > > > locale > LANG=en_US.UTF-8 > LC_CTYPE="en_US.UTF-8" > LC_NUMERIC="en_US.UTF-8" > LC_TIME="en_US.UTF-8" > LC_COLLATE="en_US.UTF-8" > LC_MONETARY="en_US.UTF-8" > LC_MESSAGES="en_US.UTF-8" > LC_PAPER="en_US.UTF-8" > LC_NAME="en_US.UTF-8" > LC_ADDRESS="en_US.UTF-8" > LC_TELEPHONE="en_US.UTF-8" > LC_MEASUREMENT="en_US.UTF-8" > LC_IDENTIFICATION="en_US.UTF-8" > LC_ALL= > > [root@srv01-bd ~]# > > > > > > > > > > > > > > El Jueves, 30 de junio, 2016 20:06:23, Gerardo Herzig > <gher...@fmed.uba.ar> escribió: > > > > - Mensaje original - > > De: "Eveling Velásquez" < lings...@yahoo.es > > > Para: "Gerardo Herzig" < gher...@fmed.uba.ar > > > CC: "Pgsql-es-ayuda" < pgsql-es-ayuda@postgresql.org > > > Enviados: Jueves, 30 de Junio 2016 15:05:24 > > Asunto: Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ > > > > > > > > Al ejecutar la sentencia > > with apellidos (apellido) as (values ('ALVARES'), > > ('DE LA CRUZ'), > > ('DE TRINIDAD'), > > ('FONSECA'), > > ('MENDOZA'), > > ('NORORI'), > > ('OSORIO'), > > ('ÑURINDA'), > > ('ÑAMENDI'), > > ('PEREZ'), > > ('PEÑA') > > > > )select * from apellidos order by apellido collate "es_AR"; > > > > > > el resultado es: > > > > > > "ALVARES" > > "DE LA CRUZ" > > "DE TRINIDAD" > > "FONSECA" > > "MENDOZA" > > "ÑAMENDI" > > "NORORI" > > "ÑURINDA" > > "OSORIO" > > "PEÑA" > > "PEREZ" > > > > > > > Me huele a que tenes un problema con las bilbiotecas "locale" en ese > server. > Tenes acceso a una consola en ese server? De ser asi, create un > archivo de texto con esos apellidos, y luego ordenalos con el > comando sort de linux. Algo asi: > root@admin-server :~# cat /tmp/archivo.txt > ALVARES > DE LA CRUZ > DE TRINIDAD > ÑURINDA > FONSECA > MENDOZA > NORORI > OSORIO > > root@admin-server :~# sort /tmp/archivo.txt > ALVARES > DE LA CRUZ > DE TRINIDAD > FONSECA > MENDOZA > NORORI > ÑURINDA > OSORIO > > Y, tambien corroborar cuales locale estas usando a nivel SO: > root@admin-server :~# locale > LANG=en_US.UTF-8 > LANGUAGE=en_US:en > LC_CTYPE=es_ES.UTF-8 > LC_NUMERIC="en_US.UTF-8" > LC_TIME="en_US.UTF-8" > LC_COLLATE=en_US.UTF-8 > LC_MONETARY="en_US.UTF-8" > LC_MESSAGES="en_US.UTF-8" > LC_PAPER="en_US.UTF-8" > LC_NAME="en_US.UTF-8" > LC_ADDRESS="en_US.UTF-8" > LC_TELEPHONE="en_US.UTF-8" > LC_MEASUREMENT="en_US.UTF-8" > LC_IDENTIFICATION="en_US.UTF-8" > LC_ALL= > > Que te sale a vos? > > > > > - > Enviado a la lista de correo pgsql-es-ayuda ( > pgsql-es-ayuda@postgresql.org ) > Para cambiar tu suscripci�: > 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
Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ
- Mensaje original - > De: "Eveling Velásquez" <lings...@yahoo.es> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Pgsql-es-ayuda" <pgsql-es-ayuda@postgresql.org> > Enviados: Jueves, 30 de Junio 2016 15:05:24 > Asunto: Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ > > > > Al ejecutar la sentencia > with apellidos (apellido) as (values ('ALVARES'), > ('DE LA CRUZ'), > ('DE TRINIDAD'), > ('FONSECA'), > ('MENDOZA'), > ('NORORI'), > ('OSORIO'), > ('ÑURINDA'), > ('ÑAMENDI'), > ('PEREZ'), > ('PEÑA') > > )select * from apellidos order by apellido collate "es_AR"; > > > el resultado es: > > > "ALVARES" > "DE LA CRUZ" > "DE TRINIDAD" > "FONSECA" > "MENDOZA" > "ÑAMENDI" > "NORORI" > "ÑURINDA" > "OSORIO" > "PEÑA" > "PEREZ" > > > Me huele a que tenes un problema con las bilbiotecas "locale" en ese server. Tenes acceso a una consola en ese server? De ser asi, create un archivo de texto con esos apellidos, y luego ordenalos con el comando sort de linux. Algo asi: root@admin-server:~# cat /tmp/archivo.txt ALVARES DE LA CRUZ DE TRINIDAD ÑURINDA FONSECA MENDOZA NORORI OSORIO root@admin-server:~# sort /tmp/archivo.txt ALVARES DE LA CRUZ DE TRINIDAD FONSECA MENDOZA NORORI ÑURINDA OSORIO Y, tambien corroborar cuales locale estas usando a nivel SO: root@admin-server:~# locale LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_CTYPE=es_ES.UTF-8 LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE=en_US.UTF-8 LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= Que te sale a vos? - 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
Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ
- Mensaje original - > De: "Eveling Velásquez" <lings...@yahoo.es> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Pgsql-es-ayuda" <pgsql-es-ayuda@postgresql.org> > Enviados: Jueves, 30 de Junio 2016 13:32:59 > Asunto: Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ > > > > Centos 7 > Version PG 9.5 > > client_encoding UTF8 > server_encoding UTF8 > lc_collate en_US.UTF-8 > lc_ctype en_US.UTF-8 > el tipo de dato de la columna es character varying > > > > > Use collate "es_AR" y el orden es el misno, la Ñ al final no despues > d la N > > > Eveling Velasquez > > > > > > > > > El Jueves, 30 de junio, 2016 9:54:51, Gerardo Herzig > <gher...@fmed.uba.ar> escribió: > > > > > > > Buen dia > > Necesito hacer un ordenamiento como el siguiente: > > > > > > ALVARES > > DE LA CRUZ > > DE TRINIDAD > > FONSECA > > MENDOZA > > NORORI > > ÑURINDA > > OSORIO > > > > > > hago un order by collate "C" y el resultado es > > > > > > > > ALVARES > > DE LA CRUZ > > DE TRINIDAD > > FONSECA > > MENDOZA > > NORORI > > OSORIO > > > > ÑURINDA > > > > > > > > quedando la letra Ñ al final, debiendo quedar después de la N > > Si, es el comportamiento esperado para la Collation "C" (de acuerdo a > las docs): > """ > On all platforms, the collations named default, C, and POSIX are > available. Additional collations may be available depending on > operating system support. The default collation selects the > LC_COLLATE and LC_CTYPE values specified at database creation time. > The C and POSIX collations both specify "traditional C" behavior, in > which only the ASCII letters "A" through "Z" are treated as letters, > and sorting is done strictly by character code byte values. > """ > > Tenes que especificar una collation que respete las normas de > ordenamiento correspondiente a tu idioma: > > postgres=# with apellidos (apellido) as (values ('ALVARES'), > ('DE LA CRUZ'), > ('DE TRINIDAD'), > ('FONSECA'), > ('MENDOZA'), > ('NORORI'), > ('OSORIO'), > ('ÑURINDA') > > ) > > select * from apellidos order by apellido collate "es_AR"; > apellido > > - > ALVARES > DE LA CRUZ > DE TRINIDAD > FONSECA > MENDOZA > NORORI > ÑURINDA > OSORIO > (8 filas) > > Por cierto, por que usas collation "C"? Cual es la default collation > para la base en la que estas trabajando? > > Gerardo > Mmm perdon, copiaste exactamente la misma query que hice yo? No podra ser que tengas algun caracter raro (no visible) dentro de esos string? - 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
Re: [pgsql-es-ayuda] [psql-es-ayuda] ordenamiento con Ñ
> > Buen dia > Necesito hacer un ordenamiento como el siguiente: > > > ALVARES > DE LA CRUZ > DE TRINIDAD > FONSECA > MENDOZA > NORORI > ÑURINDA > OSORIO > > > hago un order by collate "C" y el resultado es > > > > ALVARES > DE LA CRUZ > DE TRINIDAD > FONSECA > MENDOZA > NORORI > OSORIO > > ÑURINDA > > > > quedando la letra Ñ al final, debiendo quedar después de la N Si, es el comportamiento esperado para la Collation "C" (de acuerdo a las docs): """ On all platforms, the collations named default, C, and POSIX are available. Additional collations may be available depending on operating system support. The default collation selects the LC_COLLATE and LC_CTYPE values specified at database creation time. The C and POSIX collations both specify "traditional C" behavior, in which only the ASCII letters "A" through "Z" are treated as letters, and sorting is done strictly by character code byte values. """ Tenes que especificar una collation que respete las normas de ordenamiento correspondiente a tu idioma: postgres=# with apellidos (apellido) as (values ('ALVARES'), ('DE LA CRUZ'), ('DE TRINIDAD'), ('FONSECA'), ('MENDOZA'), ('NORORI'), ('OSORIO'), ('ÑURINDA') ) select * from apellidos order by apellido collate "es_AR"; apellido - ALVARES DE LA CRUZ DE TRINIDAD FONSECA MENDOZA NORORI ÑURINDA OSORIO (8 filas) Por cierto, por que usas collation "C"? Cual es la default collation para la base en la que estas trabajando? Gerardo - 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
Re: [pgsql-es-ayuda] Pregunta sobre indices
- Mensaje original - > De: "Alberto Cuevas"> Para: "pgsql" > Enviados: Jueves, 23 de Junio 2016 1:47:20 > Asunto: [pgsql-es-ayuda] Pregunta sobre indices > > > Hola, tengo una consulta sobre Indices. > > > Por lo que he leído los Indices me sirven para que la búsqueda sea > mas rápida. > > > Tengo una tabla (por dar un ejemplo) que tiene un PK y 2 FK > > > CREATE TABLE cliente ( > id_cliente INTEGER NOT NULL (PK) > id_sucursal INTEGER NOT NULL (FK) > id_documento INTEGER NOT NULL (FK) > > > > Mi pregunta es cuando se crea en una tabla los campos Primary Key y > Foreign Key estos por defecto ya son Indices? o debo de crearlos > independientemente? > Las PK se implementan utilizando UNIQUE INDEXES sobre el/los campos participantes en la PK. La declaracion de FK no crea (implicitamente) ningun indice, aunque ciertamente es requisito que el campo al que "apunta" la FK sea una PK en la tabla "apuntada" HTH Gerardo - 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
Re: [pgsql-es-ayuda] bases de datos con secuencias solo pares o impares
Supongo que con automatico querras decir "definido al momento de creacion". Fijate que cuando definis un campo serial, internamente crea una sequence y se la asocia al campo. Algo asi (untested): CREATE SEQUENCE numerador_par increment by 2 START 2; create table numeros_pares (id integer not null default nextval('numerador_par'), data text); Algo similar podes hacer para asociar una secuencia que comience con 1, incrementos de a 2, dandote asi numeros impares. HTH Gerardo - Mensaje original - > De: "Hellmuth Vargas"> Para: "raul andrez gutierrez alejo" > CC: "Lista Postgres ES" > Enviados: Martes, 14 de Junio 2016 12:26:54 > Asunto: Re: [pgsql-es-ayuda] bases de datos con secuencias solo pares o > impares > > > Hola Lista > > > Muchas gracias por la respuesta, pero se requiere qeu sea automático > porque se están generando varias tablas en diferente tiempo por > varios desarrolladores y mientras que se detecta la creación podría > insertarse valores pares en una base impar. Por eso en principio > explore el tema de Event Triggers > > > El 14 de junio de 2016, 10:06, raul andrez gutierrez alejo < > rauland...@gmail.com > escribió: > > > > seria así: > > ALTER SEQUENCE nombre_secuencia INCREMENT 2; > > > > > > > El 14 de junio de 2016, 9:52, Alejandra Bautista < > alejandrab...@gmail.com > escribió: > > > > > > Hola: > > Podrías iniciar tu secuencia en 1 o en 2 y en el increment porner el > número 2. > > Saludos! > > > > > > El 14 de junio de 2016, 8:18, Hellmuth Vargas < hiv...@gmail.com > > escribió: > > > > Hola Lista > > > Tengo varias base de datos PostgreSQL con varias aplicación con > Hibenate donde a cada momento realizan nuevos desarrollos creado > nuevas tablas y sus correspondiente secuencias. Quisiera > preguntarles como podría implementar la manera que siempre que se > creen secuencias en la base de datos esta sean pares o impares > automaticamente. He estado revisando el tema de los Event Triggers > mas no logro que altere la secuencia. De antemano les agradezco su > atención. > > > > -- > > > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > > > > > > > -- > > Raul Andres Gutierrez Alejo > > > > -- > > > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > > EnterpriseDB Certified PostgreSQL 9.3 Associate > > - 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
Re: [pgsql-es-ayuda] ELIIMINAR LLAVE FORANEA
Lo mas probable no es que se quede pensando (aunque es un termino muy simpatico), sino que se quede esperando un "lock" (para quitar la FK) que "nunca" le es otorgado, o al menos dentro de los tiempos tuyos de espera (que desconzco) Si estoy en lo cierto, entonces cuando ejecutas esa instruccion, conectate con otra consola y ejecuta lo siguiente: select * from pg_stat_activity where current_query = 'alter table ulsa.clases_cursos drop CONSTRAINT fk_clases_curso_ciclo;'; Fijate en la columna "waiting". Si mi intuicion es correcta, estara en 't'. Significa que esta waiting por algo...ese algo es el proceso que esta bloqueando la tabla ulsa.clases_cursos. Luego resta ver que es lo que esta bloqueando tu query. Ve esta pagina, te servira de referencia: https://wiki.postgresql.org/wiki/Lock_Monitoring HTH Gerardo - Mensaje original - > De: "Maria Antonieta Ramirez"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Lunes, 23 de Mayo 2016 11:49:33 > Asunto: [pgsql-es-ayuda] ELIIMINAR LLAVE FORANEA > > > > > Buen dia > > > > > Por medio del presente, quiero preguntar lo siguiente.. > > > > > tengo una llave foranea la cual quiero borrar de la siguiente forma: > > > > > > alter table ulsa.clases_cursos drop CONSTRAINT fk_clases_curso_ciclo; > > > > > pero no lo hace, se queda pensando y no responde , hay alguna forma > de desabilitar primero la restriccion para despues eliminarla, o > como le puedo hacer? > > > > > > > > por su atencion .. 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
Re: [pgsql-es-ayuda] Reporte Web de datos Postgrsql
Una pregunta complicada, no tecnicamente, sino porque se trata de gustos... Lo mas sencillo podria ser instalar un phpmyadmin, enseñarle que queries debe ejecutar, y ya. Sino podrias armar algunos php, o python para mostrarle los datosEl resto es maquillaje! Gerardo - Mensaje original - > De: "Micky Khan"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Sábado, 14 de Mayo 2016 15:21:28 > Asunto: [pgsql-es-ayuda] Reporte Web de datos Postgrsql > > > Holas. > > > Una consulta, nunca hice reportes ni se mucho de web. > Ahora me solicitan que la informacion que tenemos en nuestra BD de > Postgresql la puedan visualizar desde cualquier lugar y mas aun el > dueño que ahora viaja constantemente. > > > Tengo un servidor Windows Server 2003 con Postgresql 9.3 > > > Que me recomiendan, que debo de instalar a mi servidor para que > puedan visualizar los reportes. > > > Gracias > > <_> > (o o) > ( ° ) > <>-<> > Micky Khan - 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
Re: [pgsql-es-ayuda] PLPython en Windows
Mmmm yo no soy usuario de windows, perdon. Por lo visto [0], no hay python-devel en windows. Vi algunos posts sobre el asunto [1], lamento pero no conozco windows como para ser util. Gerardo [0] http://stackoverflow.com/questions/16448710/how-to-get-python-dev-for-windows [1] http://stackoverflow.com/questions/24216627/how-to-install-pl-python-on-postgresql-9-3-x64-windows-7 - Mensaje original - > De: "Freddy Martinez" <freddy311...@gmail.com> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "PostgreSQL Lista Castellano" <pgsql-es-ayuda@postgresql.org> > Enviados: Viernes, 13 de Mayo 2016 23:52:41 > Asunto: Re: [pgsql-es-ayuda] PLPython en Windows > > Hola Gerardo y gracias por responder > > > el python-devel no es el python instalado en el sistema? porque yo > tengo instalado python en windows, no sé a qué te refieres con > python devel. Me podrias decir por favor? > > > saludos cordiales > > > > > > > = > "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 > > > > > On May 13, 2016, at 10:20, Gerardo Herzig < gher...@fmed.uba.ar > > wrote: > > > Te debe faltar el "python-devel" para windows. > > Gerardo > > - Mensaje original - > > > De: "Freddy Martinez" < freddy311...@gmail.com > > Para: "PostgreSQL Lista Castellano" < pgsql-es-ayuda@postgresql.org > > Enviados: Viernes, 13 de Mayo 2016 0:24:19 > Asunto: [pgsql-es-ayuda] PLPython en Windows > > Hola a todos… soy usuario de Mac y puedo usar sin problema alguno > plpython, pero en Windows me dice esto cuando ejecuto CREATE > EXTENSION plpythonu: > > > > ERROR: could not access file "$libdir/plpython2": No such file or > directory > > > ** Error ** > > > ERROR: could not access file "$libdir/plpython2": No such file or > directory > SQL state: 58P01 > > > > > > tengo instalado python 2.7.11 > > > alguna idea ? > > > 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 > > > - 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
Re: [pgsql-es-ayuda] Saber en que columna el usuario hizo una modificacion
Mmmm lo complicado de hacerlo con triggers es obtener ese dato del usuario. Si tenes alguna forma de obtenerlo (gracias a algun id de sesion, o algo asi), entonces con un trigger podrias, con algo de trabajo, determinar que columnas de que tabla cambiaron, darle formato y grabarlo en esa tabla de auditoria HTH Gerardo - Mensaje original - > De: "José Fermín Francisco Ferreras"> Para: "Lista PostgreSQL" > Enviados: Viernes, 13 de Mayo 2016 23:50:37 > Asunto: [pgsql-es-ayuda] Saber en que columna el usuario hizo una modificacion > > > Buenas noches!! > > > Me gustaría saber como guardar en una tabla de historial los cambios > realizados solo en las columnas cuyos datos fueron modificados en > otra tabla (cliente). > > > Por ejemplo: > > > tabla: cliente > > > campos: id, nombre, apellido, fecha_nac, cedula, direccion > > > > > tabla: historial > > > id: 1 > fecha: 2016-01-01 10:00:00 > usuario: 5 > modifico dato columna: nombre > > > id:2 > fecha: 2016-01-01 14:50:10 > usuario: 2 > modifico dato columna: cedula > id:3 > fecha: 2016-01-01 14:50:10 > usuario: 2 > modifico dato columna: direccion > > > > > > > > ing. José Fermín Francisco Ferreras > San Francisco de Macorís, Rep. Dom. > - 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
Re: [pgsql-es-ayuda] PLPython en Windows
Te debe faltar el "python-devel" para windows. Gerardo - Mensaje original - > De: "Freddy Martinez"> Para: "PostgreSQL Lista Castellano" > Enviados: Viernes, 13 de Mayo 2016 0:24:19 > Asunto: [pgsql-es-ayuda] PLPython en Windows > > Hola a todos… soy usuario de Mac y puedo usar sin problema alguno > plpython, pero en Windows me dice esto cuando ejecuto CREATE > EXTENSION plpythonu: > > > > ERROR: could not access file "$libdir/plpython2": No such file or > directory > > > ** Error ** > > > ERROR: could not access file "$libdir/plpython2": No such file or > directory > SQL state: 58P01 > > > > > > tengo instalado python 2.7.11 > > > alguna idea ? > > > 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 > - 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
Re: [pgsql-es-ayuda] Failover para Streaming Replication
> > Buenas Tardes Estimad@s > > > Necesito orientación para habilitar failover en el tema streaming > replicación sin WAL.. > > > Escenario: > > > Un Master (192.168.10.1) (ref nodo1) > Un Esclavo (192.168.10.2) (ref nodo2) > > Esclavo : recovery.conf > > > > standby_mode = 'on' > primary_conninfo = 'host=192.168.10.1 port=5432 user=rep' > trigger_file = '/mi_path_data/pg_failover_trigger' > > > > --- > > > (*) ..Tengo la duda de si en el Master deba habilitarse este > parámetro pero tomé la conf de un ejemplo de alguien que tenía > iguales el postgres.conf en maestro y esclavo y le > funcionaba.. y en mi caso también funcionó.. (o talvez no > tuvo ningún efecto en el buen funcionamiento). > > > La configuración anterior me permitió hacer pruebas que fueron > exitosas en cuanto a lo que replicación se refiere... quedando el > master para las transacciones.. y el esclavo como lectura. > Sin embargo, ahora necesito planificar un failover (manual)... sin > usar pgpool o repmngr o pgHA.. o herramientas similares. Googleando > me encontré con una solución que indicaba que ante una caída del > Master simplemente había que crear en el esclavo el archivo > pg_failover_trigger especificado en el recovery.conf del > esclavo. Al hacer esto el esclavo dejaba de ser esclavo y se > transformaba en Maestro.. Hasta ahi es cierto. Crear ese archivo en la replica desliga al slave del master, o sea lo convierte en "master", pero ya no guarda ninguna relacion con el "otro master". Ambas instancias de postgres comenzaron a diverger una de otra, y ya no puedes "retomar" la condicion de "master - slave", a menos que hagas todo de nuevo. De manera nativa, streaming replication no tiene ningun mecanismo de failover ni switch-over. Entonces, suponiendo un failover (o un switch-over planificado), podrian pensarse los siguientes pasos: 1) Bajas (o se pierde) el nodo1 2) "toucheas" el archivo trigger_failover en nodo2, o su comando equivalente "pg_ctl promote" (tambien en nodo2) 3) Cambias la ip del nodo1, o haces los ajustes necesarios en tus DNS 4) Te aseguras que el nodo1 no vuelva a levantar, o le cambias la IP. Cuando el nodo1 vuelva a estar operativopues tendras que recrear streaming replication nuevamente, con tu nodo2 apuntando su replica al nodo1. Esto te dejara la cosa lista para hacer un "switch back", o sea poner operativo tu nodo1 nuevamente como master. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Agrupamiento de Segundo Nivel
Sin conocer la estructura de la/s tabla/s, y un lotecito de prueba, no veo como alguien podria ayudarte. Gerardo - Mensaje original - > De: "Rusel Fichi"> Para: "pgsql-es-ayuda" > Enviados: Martes, 10 de Mayo 2016 7:56:55 > Asunto: [pgsql-es-ayuda] Agrupamiento de Segundo Nivel > > > Hola Estimados, > > > Tengo un inconveniente, actualmente estoy migrando unos reportes que > están escritos en PHP y debo pasar a Birt Report, ya he migrado > varios de los reportes que tienen consultas sencillas y medianamente > complejas, esta vez me encuentro con un reporte que debe tener dos > niveles de agrupamiento cosa que ya no puedo hacer en BIRT usando un > query normal , procesar la data a través de algun lenguaje no se si > sea posible con esta herramienta, por los momentos deberia poder > hacerlo en un solo query, es decir debería obtener algo así: > > > - 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
Re: [pgsql-es-ayuda] sentencia cluster
http://www.postgresql.org/docs/current/static/sql-cluster.html Ahi esta todo lo que necesitas saber. HTH Gerardo - Mensaje original - > De: "heriberto giron"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Miércoles, 4 de Mayo 2016 19:49:53 > Asunto: [pgsql-es-ayuda] sentencia cluster > > > Buenas tardes > > > Alguna persona me puede indicar como es el uso de la sentencia > cluster y si en verdad agiliza o mejora las respuesta de los select, > si en verdad los realiza mas repido > > > > > 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
Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos registros
- Mensaje original - > De: "Carlos T. Groero Carmona" <cton...@gmail.com> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > Enviados: Lunes, 18 de Abril 2016 14:49:46 > Asunto: Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos > registros > > > > Hola a todos, aprovecho la pregunta de Alberto para indagar sobre > algo, restar campos de tipo date suele sencillo, pero cuando se > incluyen años bisiestos como el 2016 postgresql suma un dia mas de > ser necesario? Por ejemplo en este año tu restas (mm/dd/yy) 03/02/16 > - 28/02/16 y el resultado debe ser 3 porque es bisciesto cuando > normalmente seria 2. En PHP hay funciones para verificar si el año > es bisciesto o no pero sumarle el dia tienes que implementar tu un > metodo para eso. > Claro postgres=# select '2016-03-02'::date - '2016-02-28'::date; ?column? -- 3 (1 fila) > Otra cosa de la que no estoy seguro y quisiera saber es si en alguno > de los formatos date de PostgreSQL se incluye algún valor para el > dia de la semana, ya que seria util para obtener resultados sobre > dias laborables, restas dos fechas y el resultado es 5 días pero se > incluye sábado y domingo por lo tanto tu quisieras obtener 3. Postgres no sabe sobre "dias laborales". Para saber que dia de la semana es: postgres=# select extract (dow from now()); date_part --- 1 (1 fila) 1 para lunes, 2 para martes.0 para el domingo. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos registros
Un registro no "conoce" al registro proximo ni al anterior. Basicamente se me ocurren estas maneras: postgres=# select * from test; ord | fechainicial | fechafinal -+--+ 1 | 2015-10-01 | 2015-12-01 2 | 2015-08-01 | 2015-10-01 3 | 2015-06-01 | 2015-08-01 4 | 2015-05-01 | 2015-06-01 5 | 2015-04-01 | 2015-05-01 6 | 2015-03-01 | 2015-04-01 7 | 2015-02-01 | 2015-03-01 8 | 2015-01-01 | 2015-01-28 9 | 2014-12-01 | 2015-01-01 10 | 2014-11-01 | 2014-12-01 (10 filas) postgres=# select *, fechafinal - (select fechainicial from test where ord = t.ord - 1) from test t; ord | fechainicial | fechafinal | ?column? -+--++-- 1 | 2015-10-01 | 2015-12-01 | 2 | 2015-08-01 | 2015-10-01 |0 3 | 2015-06-01 | 2015-08-01 |0 4 | 2015-05-01 | 2015-06-01 |0 5 | 2015-04-01 | 2015-05-01 |0 6 | 2015-03-01 | 2015-04-01 |0 7 | 2015-02-01 | 2015-03-01 |0 8 | 2015-01-01 | 2015-01-28 | -4 9 | 2014-12-01 | 2015-01-01 |0 10 | 2014-11-01 | 2014-12-01 |0 (10 filas) 2) Usando pl/pgsql, abris un cursor y recorres registro por registro, haciendo un select similar al (subselect) de mas arriba, 3) Calculo que con recursive with puede llegarse a algo, pero me estoy equivocando en algo y no me sale bien. HTH Gerardo - Mensaje original - > De: "Alberto Cuevas" <betocuevas@gmail.com> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: pgsql-es-ayuda@postgresql.org > Enviados: Lunes, 18 de Abril 2016 15:03:22 > Asunto: Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos > registros > > > Muchas gracias por responder, disculpen por no dar un ejemplo mas > claro, mi tabla tiene los registros similar a esto: > > > |Ord. | FechaInicial | FechaFinal | > |1 | 01/10/2015 | 01/12/2015 | > |2 | 01/08/2015 | 01/10/2015 | > |3 | 01/06/2015 | 01/08/2015 | > |4 | 01/05/2015 | 01/06/2015 | > |5 | 01/04/2015 | 01/05/2015 | > |6 | 01/03/2015 | 01/04/2015 | > |7 | 01/02/2015 | 01/03/2015 | > |8 | 01/01/2015 | 28/01/2015 | > |9 | 01/12/2014 | 01/01/2015 | > |10 | 01/11/2014 | 01/12/2014 | > > > Debo restar FechaFinal - FechaInicial es decir: > > > FechaFinal de Ord. 2 - FechaInicial de Ord.1 = 0 dias > FechaFinal de Ord. 3 - FechaInicial de Ord.2 = 0 dias > ...... > > Y asi sucesivamente.. > > > Espero me puedan entender. > > > Saludos. > > > > > > El lun., 18 abr. 2016 a las 12:20, Gerardo Herzig (< > gher...@fmed.uba.ar >) escribió: > > > Vas a tener que orquestar 2 selects distintos para sacar tu "fecha > inicial" y tu "fecha final". Supongo que tu tabla de ejemplo es > esquematica, pero mas alla de la posible complejidad del select, el > tipo date soporta el operador de resta "habitual": > > (select fechafinal from TABLA where ord = 1) - (select fechainicial > from TABLA where ord=2) > > En tu ejemplo, el resultado seria negativo, por cierto, pero calculo > que eso lo podras contemplar. > HTH > Gerardo > - Mensaje original - > > De: "Alberto Cuevas" < betocuevas@gmail.com > > > Para: pgsql-es-ayuda@postgresql.org > > Enviados: Lunes, 18 de Abril 2016 13:36:18 > > Asunto: [pgsql-es-ayuda] Restar dos campos de tipo fecha de > > distintos registros > > > > > > > > > > > > > > Hola a todos necesito restar dos campos de tipo fecha de distintos > > registros. > > > > FechaFinal - FechaInicial > > > > | Ord. | FechaInicial | FechaFinal | > > | 2 | 26/02/2016 | 02/03/2016 | > > | 1 | 18/02/2016 | 24/02/2016 | > > > > 24/02/2016 - 26/02/2016 = 2 dias > > > > Por favor si me pueden ayudar . > > > > 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-ayuda
Re: [pgsql-es-ayuda] chmod desde postgres/plsql
Podes utilizar pl/python, o cualquier otro lenguaje soportado que permita salidas al SO. HTH Gerardo - Mensaje original - > De: "Kernel"> Para: "Ayuda" > Enviados: Miércoles, 13 de Abril 2016 10:29:07 > Asunto: [pgsql-es-ayuda] chmod desde postgres/plsql > > > hola, > > estoy creando un fichero desde plsql con un execute ('copy '), y > me > gustaria saber si hay alguna forma de hacer un chmod 666 al fichero > que > he creado. > ¿puedo ejecutar comandos de sistema? > > - > 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
Re: [pgsql-es-ayuda] Mantenimiento a base de datos
Sabe que tanto vacuum full como reindex van a bloquear la tabla contra otras consultas de "lectura" a las tablas afectadas. Asegurate de avisar y/o conseguir una ventana de downtime. Durante el proceso, te convendra subir la variable maintenance_work_mem a una porcion considerable de la RAM, asi el proceso sera mas rapido. HTH, Gerardo - Mensaje original - > De: "MARIA ANTONIETA RAMIREZ SOLIS"> Para: "FORO POSTGRES" > Enviados: Miércoles, 6 de Abril 2016 15:48:22 > Asunto: [pgsql-es-ayuda] Mantenimiento a base de datos > > > > > > > Buena tarde > > > Les agradezco el tiempo tomado para leer mi correo... > > > Tengo una duda, quiero hacer mantenimiento en mi base de datos > postgresql version 9.4, cual es la mejor forma de hacerlo, primero > correr el vacumm full y despues la reindexacion? > > > Sin mas por el momento quedo en espera de sus comentarios > > > 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
Re: [pgsql-es-ayuda] Vista con pase de parámetros
Hasta donde se, no existen las vistas parametrizadas. Supongo que una funcion seria lo mas cercano. HTH Gerardo - Mensaje original - > De: "Virginia"> Para: "Ayuda" > Enviados: Miércoles, 6 de Abril 2016 12:03:23 > Asunto: [pgsql-es-ayuda] Vista con pase de parámetros > > > Buen día, > > Quisiera saber si me pueden orientar acerca de vistas con pase de > parámetros, éstas funcionan en postgresql? Si es así, cómo se hacen? > pueden orientarme? > Lo que necesito es pasar ésta consulta de php: > > SELECT distinct (e.empid), e.empresa, nt.fecha_vencimiento, (SELECT > cp2_notas_tareas.no_renovacion FROM cp2_notas_tareas WHERE > cp2_notas_tareas.tipo = 861 AND cp2_notas_tareas.tarea_id = (SELECT > max(tareas.notareas_id) FROM cp2_notas_tareas tareas where > tareas.empid = e.empid AND to_char(DATE(tareas.fecha_vencimiento) > ,'-mm') = 'PARAMETRO1 TIPO ANHO-MES' AND tareas.categorias_nt_id > = 8 AND tareas.tipo = 860 )) as renovo, (SELECT mc.descripcion FROM > cp2_motivos_categorias mc, cp2_notas_tareas aux WHERE mc.valor = > aux.no_renovacion AND aux.tarea_id = (SELECT max(tareas.notareas_id) > FROM cp2_notas_tareas tareas where tareas.empid = e.empid AND > to_char(DATE(tareas.fecha_vencimiento) ,'-mm') = 'PARAMETRO1 > TIPO ANHO-MES' AND tareas.categorias_nt_id = 8 AND tareas.tipo = 860 > ) limit 1) as motivo, (SELECT cp2_notas_tareas.descripcion FROM > cp2_notas_tareas WHERE cp2_notas_tareas.tipo = 861 AND > cp2_notas_tareas.tarea_id = (SELECT max(tareas.notareas_id) FROM > cp2_notas_tareas tareas where tareas.empid = e.empid AND > to_char(DATE(tareas.fecha_vencimiento) ,'-mm') = 'PARAMETRO1 > TIPO ANHO-MES' AND tareas.categorias_nt_id = 8 AND tareas.tipo = 860 > )) as observacion, (SELECT cp2_notas_tareas.notareas_id FROM > cp2_notas_tareas WHERE cp2_notas_tareas.tipo = 861 AND > cp2_notas_tareas.tarea_id = (SELECT max(tareas.notareas_id) FROM > cp2_notas_tareas tareas where tareas.empid = e.empid AND > to_char(DATE(tareas.fecha_vencimiento) ,'-mm') = 'PARAMETRO1 > TIPO ANHO-MES' AND tareas.categorias_nt_id = 8 AND tareas.tipo = 860 > )) as ntid FROM empresas e INNER JOIN cp2_notas_tareas nt ON > (nt.empid = e.empid) LEFT JOIN pagos_empresas pe ON (e.empid = > pe.empid) INNER JOIN paquetes pq ON (pe.paqid = pq.paqid) WHERE > nt.categorias_nt_id = 8 AND pe.pagid = (SELECT pagid FROM > pagos_empresas INNER JOIN paquetes ON (pagos_empresas.paqid = > paquetes.paqid) WHERE pagos_empresas.empid = e.empid AND nt.tipo = > 860 AND nt.notareas_id = (SELECT max(tareas.notareas_id) FROM > cp2_notas_tareas tareas where tareas.empid = e.empid AND > to_char(DATE(tareas.fecha_vencimiento) ,'-mm') = 'PARAMETRO1 > TIPO ANHO-MES' AND tareas.categorias_nt_id = 8 AND tareas.tipo = 860 > ) ORDER BY pagos_empresas.pagid DESC LIMIT 1) AND > to_char(DATE(nt.fecha_vencimiento) ,'-mm') = 'PARAMETRO1 TIPO > ANHO-MES' ORDER BY nt.fecha_vencimiento, e.empresa ASC > > > A una vista pero no sé cómo hacer el pase del PARAMETRO1 TIPO > ANHO-MES > > Gracias por su 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
Re: [pgsql-es-ayuda] Configuración óptima
- Mensaje original - > De: "Sergio Valdes Hurtado"> Para: "Lista PostgreSql" > Enviados: Lunes, 4 de Abril 2016 17:32:59 > Asunto: [pgsql-es-ayuda] Configuración óptima > > > > Estimados, tengo Postgresql 9.5.1 en un servidor virtual con Windows > 2008 R2 Standard,con las siguientes caracteristicas: > > * Procesador Intel Xeon E5640 2.66 GHz (4 procesadores) > > * Memoria RAM 16 GB > > * Sistema operativo de 64 bits > > > La configuración de postgres es la siguiente: > > # - Memory - > > shared_buffers = 128MB # min 128kB > # (change requires restart) > #huge_pages = try # on, off, or try > # (change requires restart) > #temp_buffers = 8MB # min 800kB > #max_prepared_transactions = 0 # zero disables the feature > # (change requires restart) > # Note: Increasing max_prepared_transactions costs ~600 bytes of > shared memory > # per transaction slot, plus lock space (see > max_locks_per_transaction). > # It is not advisable to set max_prepared_transactions nonzero unless > you > # actively intend to use prepared transactions. > #work_mem = 4MB # min 64kB > #maintenance_work_mem = 64MB # min 1MB > #autovacuum_work_mem = -1 # min 1MB, or -1 to use > maintenance_work_mem > #max_stack_depth = 2MB # min 100kB > dynamic_shared_memory_type = windows # the default is the first > option > # supported by the operating system: > # posix > # sysv > # windows > # mmap > # use none to disable dynamic shared memory > > > > Este equipo se usa preferentemente para consultas estadísiticas y se > insertan registros una vez al mes en una serie de tablas. > > > Esta base de datos anteriormente estaba instalada en un PC con > bastantes menos recursos y las consultas iban más rápidas que en el > servidor actual, por lo que les quería pedir ayuda con la > configuración de postgresql. > Si la configuracion es la misma que la anterior (cosa que no mencionas, pero podria intuir que asi es), entonces lo primero que miraria seria los recursos del servidor fisico asociado a esa VM. La virtualizacion y las bases de datos suelen llevarse bastante mal. Peor aun cuando usan RAID 5 (lo cual suele ser habitual en entornos de virtualizacion). Windows es otro problema por si mismo. Mi primer propuesta seria que utilices una maquina fisica. El segundo, que utilices linux. Si nada de eso es posible, pues entonces monitorea la eficiencia de tus subsistemas de IO, tanto en la VM como en el host fisico, ya que en esos entornos el cuello de botella mas evidente suelen ser los discos. En linux, herramientas como vmstat, iostat, sar e iotop son de uso habitual en estos casos. Desconozco sus analogos para windows. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Proyectar cálculo del tamaño de índices.
Mm creo que te enroscaste de mas con el requerimiento. Hay una funcion que devuelve el tamaño de los objetos: select pg_relation_size('nombre_de_tabla_o_indice'); Solucion quick and dirtie: Dispara un cron cada, no se, media hora, 10 minutos, con algo asi: SELECT now(), indexname, pg_relation_size(indexname::regclass) from pg_indexes where tablename = 'esa_tabla_tuya' union select now(), 'esa_tabla_tuya', pg_relation_size('esa_tabla_tuya'); Y graba los resultados en una tabla, la cual podes procesar dentro de algunos dias, y proyectar el tamaño a futuro, basado en la tasa de crecimiento actual. Tal vez podrias ayudarte con alguna herramienta graficadora de metricas, para una salida mas pulida, pero creo que la idea basica se cubre con un query asi, o similar. HTH Gerardo - Mensaje original - > De: "Alfredo Rico"> Para: "Postgresql" > Enviados: Martes, 29 de Marzo 2016 20:34:26 > Asunto: [pgsql-es-ayuda] Proyectar cálculo del tamaño de índices. > > > Buen día amigos, gusto en saludarles. > > > Esto me tiene de cabeza. Tengo una tabla transaccional para almacenar > información de saldos de créditos. Día tras día se almacena nueva > información de todos los créditos de los clientes. Existe una > columna FECHA_SNAPSHOT que agrupa la información en cada día. La > definición de la tabla es la siguiente: > > > > > fecha_snapshot | date | not null | plain | | > rc_credito_numero_credito | character varying(25) | not null | > extended | | > rc_credito_tc_cliente_codigo | character varying(20) | not null | > extended | | > rc_credito_tc_agencia_codigo | character varying(10) | not null | > extended | | > saldo_capital | numeric(20,2) | not null | main | | > saldo_capital_vigente | numeric(20,2) | not null | main | | > saldo_capital_reestructurado | numeric(20,2) | not null | main | | > saldo_capital_vencido | numeric(20,2) | not null | main | | > saldo_capital_litigio | numeric(20,2) | not null | main | | > tasa_interes | numeric(7,4) | not null | main | | > cuotas_vencidas | integer | not null default 0 | plain | | > dias_mora | integer | not null default 0 | plain | | > intereses_vigentes | numeric(20,2) | not null default 0 | main | | > intereses_mora_vigentes | numeric(20,2) | not null default 0 | main | > | > intereses_reestructurados | numeric(20,2) | not null default 0 | main > | | > intereses_vencidos | numeric(20,2) | not null default 0 | main | | > intereses_cobrados | numeric(20,2) | not null default 0 | main | | > porcentaje_provision_especifica | numeric(7,4) | not null default 0 | > main | | > porcentaje_provision_generica | numeric(7,4) | not null default 0 | > main | | > porcentaje_provision_rendimiento | numeric(7,4) | not null default 0 > | main | | > monto_provision_especifica | numeric(20,2) | not null default 0 | > main | | > monto_provision_generica | numeric(20,2) | not null | main | | > monto_provision_rendimiento | numeric(20,2) | not null | main | | > consecutivo | integer | | plain | | > tc_cuenta_contable_codigo | character varying(20) | not null | > extended | | > rc_calificacion_codigo_riesgo_credito | character varying(10) | not > null | extended | | > rc_calificacion_codigo_riesgo_cliente | character varying(10) | not > null | extended | | > rc_calificacion_codigo_riesgo_sicri | character varying(10) | not > null | extended | | > rc_situacion_contable_codigo | character varying(10) | not null | > extended | | > rc_estado_pago_codigo | character varying(10) | not null | extended | > | > rc_producto_crediticio_codigo | character varying(10) | not null | > extended | | > fecha_reprecio | date | | plain | | > created_at | timestamp with time zone | default now() | plain | | > updated_at | timestamp with time zone | default now() | plain | | > Indexes: > "rc_carteras_creditos_pkey" PRIMARY KEY, btree (fecha_snapshot, > rc_credito_numero_credito, rc_credito_tc_cliente_codigo, > rc_credito_tc_agencia_codigo) > "idx_rc_carteras_creditos_rc_calificaciones1" btree > (rc_calificacion_codigo_riesgo_credito) > "idx_rc_carteras_creditos_rc_calificaciones2" btree > (rc_calificacion_codigo_riesgo_cliente) > "idx_rc_carteras_creditos_rc_calificaciones3" btree > (rc_calificacion_codigo_riesgo_sicri) > "idx_rc_carteras_creditos_rc_creditos1" btree > (rc_credito_numero_credito, rc_credito_tc_cliente_codigo, > rc_credito_tc_agencia_codigo) > "idx_rc_carteras_creditos_rc_estados_pagos1" btree > (rc_estado_pago_codigo) > "idx_rc_carteras_creditos_rc_productos_crediticios1" btree > (rc_producto_crediticio_codigo) > "idx_rc_carteras_creditos_rc_situaciones_contables1" btree > (rc_situacion_contable_codigo) > "idx_rc_carteras_creditos_tc_cuentas_contables1" btree > (tc_cuenta_contable_codigo) > Foreign-key constraints: > "fk_rc_carteras_creditos_rc_calificaciones1" FOREIGN KEY > (rc_calificacion_codigo_riesgo_credito) REFERENCES > rc_calificaciones(codigo) > "fk_rc_carteras_creditos_rc_calificaciones2" FOREIGN KEY >
Re: [pgsql-es-ayuda] Dudas sobre postgres - wal
No hay ningun costo. De hecho, la funcionalidad ya esta compilada en esos postgres que tenes ahi. Solo hace falta configurarlos. Dependiendo de la version de postgres, hay distintas formas de implementarlo. Revisa la documentacion de la version adecuada. Saludos, Gerardo - Mensaje original - > De: "Juan Pablo Moreno Rodriguez - GFI" <jpmor...@sanitas.es> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Reyes Carrera Avelar - GFI" <rcarr...@sanitas.es>, > pgsql-es-ayuda@postgresql.org > Enviados: Martes, 29 de Marzo 2016 14:49:44 > Asunto: RE: [pgsql-es-ayuda] Dudas sobre postgres - wal > > Sabes si tiene coste por core , maquina , etc ,..imagino que es libre > , no? > > > > > > > > Juan Pablo Moreno Rodriguez > Infraestructure Services > GFI Informática > > GFI Centro > Tfno.: 91.585.91.39 > Mov.: +34 674 358 740 > C/ Serrano Galvache 56 > Edificio Encina. Planta 7 > 28033 Madrid > > > -Mensaje original- > De: Gerardo Herzig [mailto:gher...@fmed.uba.ar] > Enviado el: martes, 29 de marzo de 2016 19:36 > Para: Juan Pablo Moreno Rodriguez - GFI > CC: Reyes Carrera Avelar - GFI; pgsql-es-ayuda@postgresql.org > Asunto: Re: [pgsql-es-ayuda] Dudas sobre postgres - wal > > > > - Mensaje original - > > De: "Juan Pablo Moreno Rodriguez - GFI" <jpmor...@sanitas.es> > > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > > CC: "Reyes Carrera Avelar - GFI" <rcarr...@sanitas.es>, > > pgsql-es-ayuda@postgresql.org > > Enviados: Martes, 29 de Marzo 2016 13:54:19 > > Asunto: RE: [pgsql-es-ayuda] Dudas sobre postgres - wal > > > > Gracias Gerardo , efectivamente es para replicar , de un servidor a > > otro de respaldo. > > > > > > > Ahi va. En 8.x tenes warm-standby: > http://www.postgresql.org/docs/8.2/static/warm-standby.html > > En 9.x tenes replicacion: > http://www.postgresql.org/docs/9.2/static/runtime-config-replication.html > y hot standby: > http://www.postgresql.org/docs/9.2/static/hot-standby.html > > Todo esto es nativo de postgres, sin necesidad de instalar ningun > modulo adicional. > > Saludos, > Gerardo > > > > > ADVERTENCIA: > Este mensaje o comunicación, su contenido y sus archivos adjuntos son > confidenciales y están exclusivamente dirigido al usuario o usuarios > de > destino. Si por un error de envío o transmisión ha recibido este > mensaje > y usted no es el destinario final, no está autorizado a usar, > imprimir, > copiar o difundir este mensaje bajo ningún concepto, agradeciéndole > que proceda de inmediato a la destrucción del mismo y nos comunique > esta incidencia por esta misma via. > Asimismo cualquier acción tomada o dejada de tomar basada en la > información > contenida en este mensaje queda prohibida y puede ser ilegal. > > WARNING: > The information, contents and attachments of this email are > confidential and > are exclusively addressed to addressee or addresses stated. If you > have received > this message by mistake or failure in transmission and you are not > the > intended recipient, you are not allowed to use, print, copy or > distribute > this message under any circumstances, please immediately destroy and > inform us about it by this same mean . > Likewise, any action taken or omitted with respect to the information > in this message is prohibited and may be unlawful. > - 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
Re: [pgsql-es-ayuda] Dudas sobre postgres - wal
- Mensaje original - > De: "Juan Pablo Moreno Rodriguez - GFI" <jpmor...@sanitas.es> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Reyes Carrera Avelar - GFI" <rcarr...@sanitas.es>, > pgsql-es-ayuda@postgresql.org > Enviados: Martes, 29 de Marzo 2016 13:54:19 > Asunto: RE: [pgsql-es-ayuda] Dudas sobre postgres - wal > > Gracias Gerardo , efectivamente es para replicar , de un servidor a > otro de respaldo. > > > Ahi va. En 8.x tenes warm-standby: http://www.postgresql.org/docs/8.2/static/warm-standby.html En 9.x tenes replicacion: http://www.postgresql.org/docs/9.2/static/runtime-config-replication.html y hot standby: http://www.postgresql.org/docs/9.2/static/hot-standby.html Todo esto es nativo de postgres, sin necesidad de instalar ningun modulo adicional. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Dudas sobre postgres - wal
> > Hola buenas tardes ; soy Juan Pablo Moreno de Sanitas, estoy en el > área de Sistemas-Unix. > > > > Nos han surgido dudas, sobre el postgres y wal. > > Tenemos varias versiones de postgres 8.x a 9.2.4 , estamos mirando la > posibilidad del wal, y aumentar la carga productiva de esta BBDD. > > > > Las dudas son : > > > > · Esta funcionalidad/paquete está disponible para todas las versiones > de postgres, o partir de que version?. > > · Esta incluido en el paquete ( rpm ) estándar de Postgres. > > · Tiene algún tipo de coste de utilización por cpu , core , etc,…. > El wal, en el uso habitual del termino, es una suerte de "buffer de escritura", y todos los postgres lo usan. Siempre. No podes no usarlo. Ahora, si entiendo por "aumentar la carga productiva"...yo diria que eso es replicar+balanceo de carga? Replicar se puede, a partir de la version 9.0. Con 8.x tambien se puede, pero es mayor la ventana de tiempo entre el master y el slave. Balanceo de carga lo podes hacer con pgpool. Tal vez si nos comentas mas concretamente que es lo quieren hacer, tengas mejores respuestas que esta. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Inconveniente con restaurar respaldo
- Mensaje original - > De: "Edwin De La Cruz" <edwinsp...@gmail.com> > CC: "Lista Postgres ES" <pgsql-es-ayuda@postgresql.org> > Enviados: Domingo, 20 de Marzo 2016 19:29:03 > Asunto: Re: [pgsql-es-ayuda] Inconveniente con restaurar respaldo > > El día 18 de marzo de 2016, 21:46, Gerardo Herzig > <gher...@fmed.uba.ar> escribió: > > Y si ejecutas directamente pg_restore en el server (o en una > > estacion que tenga la misma version de postgres que el de > > produccion) te devuelve el mismo error? > > > > Gerardo > > > > - Mensaje original - > >> De: "Edwin De La Cruz" <edwinsp...@gmail.com> > >> Para: "Lista Postgres ES" <pgsql-es-ayuda@postgresql.org> > >> Enviados: Viernes, 18 de Marzo 2016 19:13:30 > >> Asunto: [pgsql-es-ayuda] Inconveniente con restaurar respaldo > >> > >> Saludos cordiales. > >> Espero su ayuda ya que estoy al borde del llanto. > >> Tengo una aplicación que usa postgres, he sacado un respaldo una > >> vez > >> por semana sin aparentes problemas. > >> > >> El dia de ayer estuve borrando unos indices que me estaban dando > >> problemas y estaban un poco crecidos de tamaña y ademas ya no me > >> eran > >> utiles. > >> En ese proceso cuando borrarba uno de ellos cada vez se empezaba a > >> demorar mas y mas al punto de que la maquina llego al 100% de > >> proceso > >> y no se podia trabajar. > >> > >> Probe a reiniciar la maquina y apenas llegana a Debian (Jessie) el > >> proceso de postgres se disparaba. > >> > >> Asi, lento y todo saque una vez mas un respaldo, borre la base de > >> datos, reinicie la maquina, cree nuevamente la base de datos, la > >> restaure con el respaldo y o sorpresa, solo tengo las tablas y > >> datos > >> en ellas pero NADA de FUNCIONES, TRIGGERS, VIEWs, etc. > >> > >> Al restaurar me aparecio muchos mensajes como este: > >> > >> Error: Schema node not found for object INDEX > >> index_ej_idaccount_201510 [owner: postgres] > >> > >> Probe con respaldos de fecha anteriores y sucede lo mismo. > >> > >> Solo me funcionó con un respaldo de hace mas de un año. > >> He perdido todas mis vistas y mas que nada me duele haber perdido > >> las > >> funciones y triggers que eran complejos... > >> > >> Para sacar respaldos y para restaurar use pgAdminIII. > >> > >> Hay alguna forma de solo restaurar las vistas, funciones y > >> triggers? > >> > >> Si intento ver los objetos que hay en el respaldo usando > >> pgAdminIII > >> me > >> aparece el mensaje que indique mas arriba. > >> > >> Estoy desesperado ya que es el trabajo de mas de un año. > >> > >> Espero me puedan dar una guia de como solucionarlo. > >> > >> Gracias. > >> > >> > >> Mis proyectos de software libre en: > >> Github - edwinspire > >> > >> - > >> 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 > >> > > Saludos nuevamente. > Bueno despues de sufrir un buen tiempo al siguiente dia hice las > cosas > con mas calma y se me ocurrio crear una nueva base de datos con otro > nombre y restaurar ahi solo el esquema, funcionó casi completamente, > algunas llaves foraneas e indices no se restauraron pero no son gran > cosa, lo puedo volver a hacer a mano. > > Intente restaurar unicamente los datos pero me daba errores, que no > recuerdo. Asi que se me ocurrio restaurar tabla por tabla pasando de > respaldo.tar a tabla.sql y una vez con tabla.sql restaurarlo usando > psql. > > Las tablas pequeñas se restauraron sin problema, pero las grandes > estan demorando mucho mucho tiempo. > > Ejemplo: > un archivo tabla.sql que pesa 40 Megas demoro en restaurarse un hora > mas o menos, pero tengo una tabla que pesa 626 Megas y va casi 12 > horas restaurandose y no termina. > El problema que tengo es que tengo otras tablas que pesan 10 Gigas! > > El comando que uso para restaurar luce asi: > > psql -U postgres -d oms < > "/home/openams/tempo/20160318_0825_events_jobs_201601.sql" > > Ademas de esto la tabla que se esta rastaurando esta como bloqueada, > no puedo hacer inserts ni select, ni nada. > > Existe alguna forma mas rapida de restaurar u
Re: [pgsql-es-ayuda] Consulta no se devuelve en varias columnas
Proba invocandola con * SELECT * from f_usuario_login(...) (con asterisco, o con los campos que quieras devolver.) - Mensaje original - > De: "Marcos Pastor"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Domingo, 20 de Marzo 2016 16:19:29 > Asunto: [pgsql-es-ayuda] Consulta no se devuelve en varias columnas > > > > Estimados estoy haciendo la siguiente funcion y me devuelve un solo > campo record con los valores entre comas, como puedo hacer para que > me devuelva en vaias columnas, a mi criterio el codigo esta bien > tengo postgre 9.5. Intente tambien con returns setof record y > parametros out y me sale lo mismo. > > > Codigo de funcion: > > CREATE OR REPLACE FUNCTION public.f_usuario_login( > vf_usuario character, > vf_clave character > ) > RETURNS table(persona character varying(13), periodo integer, ruc > character varying(13), perfil integer, activo character varying(1)) > AS > $BODY$ > declare > id_persona character varying(13); > ruc_insti character varying(13); > periodo_act integer; > perfiles integer; > begin > if not exists (select * from usuario where usuario=vf_usuario) then > raise exception 'El usuario % no existe en nuestra base de datos.', > vf_usuario; > else > select ruc_institucion_fk, ced_persona_fk into ruc_insti, id_persona > from usuario where usuario=vf_usuario and clave=vf_clave; > if not found then > raise exception 'La contraseña ingresada no es correcta, por favor > vuelva a intentarlo'; > else > periodo_act := (select f_getperiodo_act(ruc_insti)); > if (periodo_act = -1) then > raise exception 'El periodo no ha sido actualizado, por favor > contáctese con el Administrador del sistema.'; > else > return query select * from usuarios_actuales where > ced_persona_fk=id_persona and id_periodo_fk=periodo_act and > id_institucion_fk=ruc_insti and status='A'; > if not found then > raise exception 'El usuario no tiene permiso para este periodo, por > favor contáctese con el Administrador del sistema.'; > end if; > end if; > end if; > end if; > end;$BODY$ > LANGUAGE plpgsql VOLATILE > COST 100; > > > Adjunto la imagen del output. > > > 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-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
Re: [pgsql-es-ayuda] Inconveniente con restaurar respaldo
Y si ejecutas directamente pg_restore en el server (o en una estacion que tenga la misma version de postgres que el de produccion) te devuelve el mismo error? Gerardo - Mensaje original - > De: "Edwin De La Cruz"> Para: "Lista Postgres ES" > Enviados: Viernes, 18 de Marzo 2016 19:13:30 > Asunto: [pgsql-es-ayuda] Inconveniente con restaurar respaldo > > Saludos cordiales. > Espero su ayuda ya que estoy al borde del llanto. > Tengo una aplicación que usa postgres, he sacado un respaldo una vez > por semana sin aparentes problemas. > > El dia de ayer estuve borrando unos indices que me estaban dando > problemas y estaban un poco crecidos de tamaña y ademas ya no me eran > utiles. > En ese proceso cuando borrarba uno de ellos cada vez se empezaba a > demorar mas y mas al punto de que la maquina llego al 100% de proceso > y no se podia trabajar. > > Probe a reiniciar la maquina y apenas llegana a Debian (Jessie) el > proceso de postgres se disparaba. > > Asi, lento y todo saque una vez mas un respaldo, borre la base de > datos, reinicie la maquina, cree nuevamente la base de datos, la > restaure con el respaldo y o sorpresa, solo tengo las tablas y datos > en ellas pero NADA de FUNCIONES, TRIGGERS, VIEWs, etc. > > Al restaurar me aparecio muchos mensajes como este: > > Error: Schema node not found for object INDEX > index_ej_idaccount_201510 [owner: postgres] > > Probe con respaldos de fecha anteriores y sucede lo mismo. > > Solo me funcionó con un respaldo de hace mas de un año. > He perdido todas mis vistas y mas que nada me duele haber perdido las > funciones y triggers que eran complejos... > > Para sacar respaldos y para restaurar use pgAdminIII. > > Hay alguna forma de solo restaurar las vistas, funciones y triggers? > > Si intento ver los objetos que hay en el respaldo usando pgAdminIII > me > aparece el mensaje que indique mas arriba. > > Estoy desesperado ya que es el trabajo de mas de un año. > > Espero me puedan dar una guia de como solucionarlo. > > Gracias. > > > Mis proyectos de software libre en: > Github - edwinspire > > - > 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
Re: [pgsql-es-ayuda] lock up cache in function
La ultima vez que me paso eso, habia una UI "colgada" editando la funcion. Asegurate que no haya nadie conectado a la base, o programa tu backup para un horario de menos concurrencia. Podra ser? Gerardo - Mensaje original - > De: "Flavio Roche" <fero...@uci.cu> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > CC: "Mario De León" <cds...@gmail.com>, pgsql-es-ayuda@postgresql.org > Enviados: Lunes, 7 de Marzo 2016 17:21:47 > Asunto: lock up cache in function > > Buenos dias lista, tengo el siguiente problema... > > Necesito hacerle un backup a una de mis BD(postgre 9.4),pero a la > hora de realizarlo me da el error 'lock up cache in function y el > oid d la function', trato d eliminar dicha función y tambien m da el > mismo error,es decir cualquier cosa que quiera hacer con dicha > funcion(select,drop,etc) me da el mismo error,alguna > sugerencia,ahora mismo ya no utilizo esa funcion,quiero borrarla > para hacer el backup q necesito.Alguna idea para borrar dicha > función.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-ayuda
Re: [pgsql-es-ayuda] Comportamiento de postgres
Ok. Me parece importante (por no decir crucial) ver los logs. Vas a tener que modificar las siguientes variables en el postgresql.conf: log_line_prefix = '<(%p) %u@%h: - %d - %t (%c -> %l) = (%e)>' log_statement = 'all' log_connections = on log_disconnections = on log_duration = on Una vez que reiniciaste el postgres, hace ese UPDATE, y mostranos la porcion del log, desde la conexion (por eso el log_connections) hasta la desconexion (si no se desconecta, entonces hasta el COMMIT) Saludos Gerardo - Mensaje original - > De: "Mario De León" <cds...@gmail.com> > Para: pgsql-es-ayuda@postgresql.org > Enviados: Domingo, 6 de Marzo 2016 21:56:56 > Asunto: Re: [pgsql-es-ayuda] Comportamiento de postgres > > Gracias Gerardo: > El servidor es 9.5 en windows, se dejó la configuración del > instalador y > se agregaron los permisos para usuario en localhost. > En la aplicación el driver es JDBC42, sin instalador y con java 8. > La aplicación se desarrolló en linux con java 8 y el servidor en > localhost. Ahí funciona perfectamente. > Este es el bloque más representativo del update. > > String sql = "UPDATE cuenta SET visible=? WHERE indice=?"; > PreparedStatement prepareStatement = conexion.prepareStatement(sql); > prepareStatement.setBoolean(1, false); > prepareStatement.setLong(2, indice); > prepareStatement.executeUpdate(); > > Saludos. > > El 06/03/16 a las 17:54, Gerardo Herzig escribió: > > Lo mas probable es que sea un asunto de aplicacion. Para ello, yo > > comenzaria por 2 cosas: > > > > 1) En los logs (seteando log_statement = all) podras ver cuando > > realmente se ejecuto tal UPDATE. Eventualmente, tambien deberias > > ver el COMMIT (si es que los estas usando explicitamente) > > > > 2) Proba de ejecutar un UPDATE directamente desde una consola > > (psql), y chequea que el UPDATE se refleje correctamente usando la > > aplicacion. Si en la aplicacion no se refleja, entonces chequealo > > de nuevo usando psql. > > > > No provees practicamente ninguna informacion, pero me huele a algun > > temita con el cache del conector del entorno (.net?), o algo asi > > > > Si seguis con dudas, comenza por informar > > * version de postgres > > * mostrar los logs (suena a crucial para este caso) > > > > > > Saludos > > Gerardo > > - Mensaje original - > >> De: "Mario De León" <cds...@gmail.com> > >> Para: pgsql-es-ayuda@postgresql.org > >> Enviados: Domingo, 6 de Marzo 2016 16:40:02 > >> Asunto: [pgsql-es-ayuda] Comportamiento de postgres > >> > >> Saludos lista: > >> Es un sistema instalado en windows. Al ejecutarse un update, tarda > >> mucho > >> tiempo en reflejarse en los select, puede tratarse de días, la > >> computadora se apaga al finalizar el día y las operaciones son en > >> forma > >> local. Las tablas contienen muy pocos registros, menos de 10, las > >> tablas > >> varían de 10 a 62 columnas y tienen su llave maestra. Alguna idea > >> de > >> que > >> pueda pasar o como buscar documentación de este problema. > >> > >> Muchas gracias por su apoyo. > >> > >> - > >> 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 > - 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
Re: [pgsql-es-ayuda] Comportamiento de postgres
Lo mas probable es que sea un asunto de aplicacion. Para ello, yo comenzaria por 2 cosas: 1) En los logs (seteando log_statement = all) podras ver cuando realmente se ejecuto tal UPDATE. Eventualmente, tambien deberias ver el COMMIT (si es que los estas usando explicitamente) 2) Proba de ejecutar un UPDATE directamente desde una consola (psql), y chequea que el UPDATE se refleje correctamente usando la aplicacion. Si en la aplicacion no se refleja, entonces chequealo de nuevo usando psql. No provees practicamente ninguna informacion, pero me huele a algun temita con el cache del conector del entorno (.net?), o algo asi Si seguis con dudas, comenza por informar * version de postgres * mostrar los logs (suena a crucial para este caso) Saludos Gerardo - Mensaje original - > De: "Mario De León"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Domingo, 6 de Marzo 2016 16:40:02 > Asunto: [pgsql-es-ayuda] Comportamiento de postgres > > Saludos lista: > Es un sistema instalado en windows. Al ejecutarse un update, tarda > mucho > tiempo en reflejarse en los select, puede tratarse de días, la > computadora se apaga al finalizar el día y las operaciones son en > forma > local. Las tablas contienen muy pocos registros, menos de 10, las > tablas > varían de 10 a 62 columnas y tienen su llave maestra. Alguna idea de > que > pueda pasar o como buscar documentación de este problema. > > Muchas gracias por su apoyo. > > - > 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
Re: [pgsql-es-ayuda] Replicacion asincrona de base de datos en vez de cluster
Programas como slony [0] tienen la granularidad (para replicar) de una tabla. Bien podes tener una replica en el sentido "server -> tiendas", en convivencia con otra "tienda -> server". El chiste es que este ultimo caso no es, tecnicamente, replicacion, sino que mas bien es un conglomerado de datos, donde todos los datos de las tiendas se acumulan en el server central. Si usas el mecanismo de "particionado" [1], podes particionar por el campo "tienda_id". Luego lo que vas a replicar son cada particion (hacia la particion correspondiente en el master). De este modo podes usar slony sin demasiados problemas. HTH Gerardo [0] http://slony.info/ [1] http://www.postgresql.org/docs/current/static/ddl-partitioning.html - Mensaje original - > De: "Ruben Fitó"> Para: "Horacio Miranda" > CC: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 18 de Febrero 2016 6:01:22 > Asunto: Re: [pgsql-es-ayuda] Replicacion asincrona de base de datos en vez de > cluster > > > > Buenos dias, > > > Gracias Horacio por tu respuesta, > > > Efectivamente necesitamos un sistema "OFFLINE" en la tiendas. > > > La arquitectura inicial que habíamos planteado con "Streaming > Replication" era: > > > BBDDSERVER TIENDA > Configuración RW -> RO > Transacciones RO <- RW > > > Según este esquema tenemos que, por cada TIENDA, necesitamos 2 BBDD > con sus réplicas para 2 objetivos distintos: Configuración i > Transacciones. > > > En caso de la BBDD de configuración, la RW se encuentra en nuestro > server i la réplica en la tienda. Esto nos permite: > > > * Configurar la tienda de manera centralizada. > * Des de la BBDD de la tienda nunca se podran modificar los > datos. > * Siempre tendremos una sincronización "real-time" de ese modo > evitamos procesos batch, triggers, entre otros, que tengan que > actualizar la BBDD de la tienda. > > > > En caso de las transacciones pasa lo mismo pero des de la otra > dirección: > > > * La tienda va apuntando las transacciones i en "real-time" se > sincroniza con el la BBDD del server. > * Des del server no se podran hacer manipulaciones de > transacciones. Algo muy interesante en nuestro mundillo. > * El server recibe, de forma centralizada, todos los datos de > todas las tiendas. > > > > En realidad, esta arquitectura son todo ventajas, exceptuando la gran > complejidad de configurar i mantener 2 clústeres en server i 2 en > tienda, por cada tienda. > > > Por parte de la tienda, una vez creados los 2 clústeres, ya no hay > que hacer mucho mas, pero por el lado del servidor, gestionar, > configurar, acceder i mantener 2 clústeres por las 56 tiendas que > tiene la empresa es una barbaridad de trabajo y recursos. > > > Lo ideal seria que sólo haya un único cluster en el servidor i uno en > cada tienda. > > > Por ello, estamos buscando alternativas al "Streaming Replication" > que puedan darnos las mismas garantias: > > > * Sincronización Asíncrona. (Qué rara esta frase, jejejeje) > * Que se sincronizen todos los cambios hechos, no sólo por cada > conexión. > * Que sean BBDD RO. > * Gestión cero, por nuestra parte, para restablecer conexión. > * Garantizar la integridad de datos, concurrencia, etc.. > * Evitar deadlocks. > * Y más... > > > > Entendemos que un "Streaming Replication" es como una copia en > binario(archivos WAL) de todo lo sucedido en la base de datos, y que > no es posible hacer una replicación por un subconjunto de datos > diferentes. > > > Por este motivo, os pedimos consejo, ya que las alternativas(fdw, > dblink) por ahora analizadas, no cumplen con nuestros requisitos. > > > Gracias. > > > Un saludo > > > > > > > > > 2016-02-18 5:10 GMT+01:00 Horacio Miranda < hmira...@gmail.com > : > > > On 2/17/2016 2:02 AM, Ruben Fitó wrote: > > > Buenos dia lista, > > Para empezar, tenemos un sistema de replicación "Streaming > replication" > con postgresql 9.3. > > Hemos comprovado que este sistema es estable y que aguanta caídas de > varias horas (segun hemos configurado). > > Ahora tenemos intención de hacer algo parecido pero no por clúster > sino > por diferentes bases de datos por un mismo cluster. > > > Estoy un poco confundido, quieres replicar parcialmente de una base > de datos a otra ? > > > > Hemos estado buscando en la documentación y hemos visto que existen > diferentes módulos de sincronización como dblink o pg_fwd, pero no > hemos > podido comprobar su eficacia. > > > Según los otros email creo que lo que necesitas es tener dos bases de > datos ( una replicada ) y otra local. Los cambios se hacen en la > base de datos local y la base de datos local tiene permisos > read_only hacia la base de datos que quieres replicar. > > > > > Conocéis algún sistema de sincronización parecido al que > necesitamos?? > > Creo que streams desde la base de datos central
Re: [pgsql-es-ayuda] como pasar parametros de tipo text
M si entendi bien, basicamente veo 2 opciones: 1) "Construir" el array desde la app (php?), o 2) Usar sobrecarga de funciones, como algo asi CREATE FUNCTION my_funcion(text) ... as $$ select * from my_funcion(regexp_split_to_array($1, ','); $$ language sql; O sea, "casteas" via otra funcion SQL. regexp_split_to_array() convierte, justamente, el texto (que asumo esta separado por comas) en un array. HTH Gerardo - Mensaje original - > De: "heriberto giron"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Miércoles, 10 de Febrero 2016 18:46:39 > Asunto: [pgsql-es-ayuda] como pasar parametros de tipo text > > > > cree una funcion que recibe como parametro una array de tipo text > > comp puedo pasar un parametro de typo texto a esta funcion > > > > > > > > > > > > > > > -- > > > - - 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
Re: [pgsql-es-ayuda] PITR Point in Time Recovery en linea administrado
- Mensaje original - > De: "Hellmuth Vargas"> Para: "Lista Postgres ES" > Enviados: Viernes, 20 de Noviembre 2015 11:45:35 > Asunto: [pgsql-es-ayuda] PITR Point in Time Recovery en linea administrado > > > Buenos dias Lista > > > > > Dado que en algunas oportunidades (mas de las que quisiera) se borran > datos de tablas,o incluso las tablas mismas, se actualizan con datos > errores, etc etc, etc (otro tema es que entren usuario con > privilegios a hacer estas calamidades... ) para subsanar esto hay > que restaurar backups y con los WAL archivados restaurar los datos > alterados, esto toma tiempo, mas cuando las bases son grandes y mas > cuando no se sabe exactamente la hora del suceso; para la versión > 9.4 existe la posibilidad de mantener una replica retasada un X > tiempo ( > http://www.depesz.com/2013/12/20/waiting-for-9-4-allow-time-delayed-standbys-and-recovery/ > ) que ayuda bastante, pues es una base EN LINEA con la foto de > nuestra base de hace X tiempo, mas si el cambio fue antes de este > tiempo, ni modos... Entonces la pregunta es: > > > Que posibilidades hay de mantener una replica en linea retrasada X > tiempo (casi una semana, por ejemplo) pero que se pudiera > administrar la aplicación de los WAL de forma manual, para permitir > operaciones como (todas ojala dentro de una transaccion para poder > devolver el cambio en el caso que uno se 'pasara' de la hora del > suceso): > Se puede jugar con el "recovery_command" en la replica, haciendo un script que solo aplique el wal solo si la fecha de creacion del archivo supera, digamos, 7 dias. > > > > - Aplicación de cambios hasta un timestamp defnido Eso se puede hacer hace tiempo, via recovery.conf > - Aplicación de WAL interactivamente, algo como aplique el siguiente > WAL para que por tanteo se pueda llegar a los datos mas próximos > antes de la calamidad Mmmm no estoy seguro qeu haya funcion/es para procesar WALs interactivamente...por algun motivo me hace ruido qeu las hubiere. Pero de haberlas, podria utilizarse, supongo > > > Y con todas las bondades de las replicas en linea. Muchas gracias > Lista y quedo atento a sus comentarios. > > > > > > > > > > > > > > -- > > > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > > EnterpriseDB Certified PostgreSQL 9.3 Associate > > - 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
Re: [pgsql-es-ayuda] acumular datos tipo horas
- Mensaje original - > De: "felix gonzales"> Para: "PostgreSQL" > Enviados: Jueves, 5 de Noviembre 2015 13:04:18 > Asunto: [pgsql-es-ayuda] acumular datos tipo horas > > > > Saludos Lista! > > > Para obtener el total en horas, minutos y segundos (de los datos mas > abajo indicados) probablemente haya que pasar todos a segundos y > luego calcular las h:m:s , alguna otra idea? se agradece cualquier > aporte. > > > > time_acum > > 12:00:18 > 00:02:17 > 05:00:26 > 00:07:17 > 00:48:23 > 10:11:24 > 18:12:23 > 24:23:20 > > hh:mm:ss ??? > > > Y que tal select sum(time_acum) from ? Gerardo - 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
Re: [pgsql-es-ayuda] duda sobre indices
- Mensaje original - > De: "Igniris Valdivia"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 22 de Octubre 2015 17:44:05 > Asunto: [pgsql-es-ayuda] duda sobre indices > > buenas tardes a todos > tengo una duda > tengo un indice btree que contiene dos campos digamos id1 e id2 pues > se > debe garantizar la unicidad de la combinacion de estos campos > ahora en la consulta donde la uso se usan los operadores igual e IN > como > por ejemplo: > > id1=id3 AND id2 IN (1,2,3) > > y como el indice es compuesto la busqueda del IN la hace secuencial > > que pudiera hacer para arreglar eso sin tener que crear un nuevo > indice > solo para el capo id2 pues considero que esto ralentizaria aun mas la > consulta en lugar de optimizarla > > gracias de antemano > saludos > Lo primero que debes hacer es mostrar un EXPLAIN ANALYZE de tu consulta. Sino estamos jugando a las adivinanzas. Y es dificil. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] insert eficiente
- Mensaje original - > De: "Fernando Rodiño"> Para: "Ayuda" > Enviados: Jueves, 1 de Octubre 2015 19:45:08 > Asunto: [pgsql-es-ayuda] insert eficiente > > > Buenas tardes a todos > > > > Acudo a su amable ayuda para lo siguiente: > > > Tenemos una implementación de Postgres 9.3 y estamos en un proceso > con Pentaho Data Integration donde se hace un mapeo de unos archivos > planos a una tabla, se realiza una adecuación de estos datos y se > hace un insert masivo a una tabla destino X, hasta ahí todo > funciona, el problema que tenemos es que es mucha información y la > tabla destino tiene varios indexes que hacen más demorada la > operación, en Postgres 8.4 uno podía inactivar los indexes mientras > ejecutaba la operación, pero en Postgres 9.3 no funciona esa > estrategia o almenos como se hacia en Postgres 8.4 no funciona: > update pg_index set indisvalid = false where indexrelid = > 'i_nombre_index'::regclass; Alguien conoce una estrategia para > realizar este tipo de operaciones que funcione en postgres 9.3 > > > Muchas gracias por su ayuda. > Para los bulk inserts suele ayudar: * borrar los indices (y recrearlos luego de la insercion) * set maintenance_work_mem TO 'una buena porcion de la RAM' (para acelerar la creacion de los indices) * set syncronous_commit to 'OFF' (si puedes tomar el riesgo de perder alguna transaccion) * deshabilitar (temporalmente) autovacuum para la tabla que recibe esos datos HTH Gerardo - 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
Re: [pgsql-es-ayuda] duda sobre ciclos anidados
Debes copiar *exactamente* la porcion de codigo afectada, y *exactamente* el error. Sino no se entiende nada. Saludos, Gerardo - Mensaje original - > De: "Igniris"> Para: pgsql-es-ayuda@postgresql.org > Enviados: Martes, 29 de Septiembre 2015 11:53:40 > Asunto: [pgsql-es-ayuda] duda sobre ciclos anidados > > Hola a todos > tengo una funcion en plpgsql en la que estoy haciendo un for sobre un > record en este hay una insercion y dentro de este for hay otro con > otra > insercion pero que depende de la primera y cuando se ejecuta me dice > que > el identificador todavia no existe en la 1ra tabla que pudiera hacer? > Saludos y 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 > - 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
Re: [pgsql-es-ayuda] Borrado de una tabla
- Mensaje original - > De: "Enrique Escobar"> Para: "Lista Postgres ES" > Enviados: Miércoles, 23 de Septiembre 2015 23:36:05 > Asunto: [pgsql-es-ayuda] Borrado de una tabla > > > > > Buena noche > > Diran que algo burda la consulta pero me atore. > > Tengo una base llamada tuti y necesito borrar una tabla del esquema > nombre llamada fruti, (la tabla se llama frutas_09_08). Lo que hago > es esto. (Desde la línea de comando). No deseo usar pgadmin porque a > esta tabla no tiene abierto el puerto. > > Textualmente pongo esto. (sin los puntos lo pongo para que no cambie > de mayúscula a minúscula). > > . su – postgres > > . psql –U Postgres –d tuti > > . DROP TABLE fruti.frutas_09_08 > > > > El problema es que no esta borrando nada. Como ven que se me paso por > alto?. > > Mil gracias como siempre. > El ; al final del comando? - 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
Re: [pgsql-es-ayuda] Criterio para crear indices
- Mensaje original - > De: "Edwin De La Cruz"> Para: "Jaime Casanova" , > pgsql-es-ayuda@postgresql.org > Enviados: Jueves, 17 de Septiembre 2015 12:44:06 > Asunto: Re: [pgsql-es-ayuda] Criterio para crear indices > > El día 17 de septiembre de 2015, 10:39, Edwin De La Cruz > escribió: > > Mis proyectos de software libre en: > > Github - edwinspire > > > > > > El día 17 de septiembre de 2015, 10:23, Jaime Casanova > > escribió: > >> 2015-09-17 9:57 GMT-05:00 Edwin De La Cruz : > >>> Saludos. > >>> Buenos tengo dos criterios para las particiones. > >>> la tabla events es la tabla "general" que tiene campos comunes > >>> para > >>> todas las tablas hijas. > >>> > >>> El resto de tablas hijas tienen campos adicionales que en la > >>> tabla no > >>> existen, esa fue la primera razon por la que particioné. > >>> > >>> Luego al ver que el desempeño iba cayendo fue que decido > >>> particionar > >>> las tablas hijas y dividirlas por meses. > >>> > >>> Ahora bien, el cuello de botella esta en la consulta: > >>> > >>> SELECT idevent FROM events WHERE ideventtype = > >>> ANY(et.auto_close_on_event_defined) > >>> AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND > >>> idevent != NEW.idevent > >>> > >>> Si comento esta linea de código todo va bien, pero cuando la > >>> activo se > >>> presenta el problema, es ahi donde debo atachar y resilver pero > >>> no se > >>> como. > >>> > >> > >> la razón por la que el desempeño fue cayendo es que como mencione > >> la > >> consulta no tiene una manera de excluir particiones. > >> para eso debes agregar a la consulta una clausula en el where que > >> haga > >> referencia a como esta particionada la tabla Y agregar los > >> constraints > >> check que mencione a las tablas hijas (ambas cosas deben hacerse, > >> no > >> solo una) > >> > >> al crear mas particiones por debajo solo hiciste las cosas peor de > >> lo > >> que estaban. > >> la razón por la que te baja el rendimiento es que al tener varias > >> particiones y no excluir ninguna lees la misma cantidad de > >> registros > >> que antes solo que ahora las lees de distintas tablas y > >> adicionalmente > >> ahora agregas pasos adicionales a tu consulta pues debes mezclar > >> los > >> resultados de las distintas tablas. > >> > >> finalmente, estas consciente de que los campos adicionales en las > >> tablas hijas no serán visibles si consultas desde la tabla padre, > >> verdad? > >> > > > > Si lo se, precisamente asi necesito que funcione, lo normal es que > > haga la consulta a la tabla padre, si necesito mayor informacion > > (los > > campos de la tabla hija), solo entonces consulto a la hija. > > > >> nuevamente, podrías mostrar el plan de ejecución? es decir, la > >> salida > >> del explain analyze (por favor en un archivo de texto adunto) > >> > > > > Aqui va: > > > > EXPLAIN ANALYZE SELECT idevent, ts, loaded, dateevent, status, > > idaccount, code, priority, > >ideventtype, description, idadmin, last_comment, account, > >zu, > >note > > FROM events; > > > > > > > > > > "Append (cost=0.00..334407.05 rows=7227407 width=189) (actual > > time=0.015..13199.182 rows=6727718 loops=1)" > > " -> Seq Scan on events (cost=0.00..0.00 rows=1 width=260) > > (actual > > time=0.000..0.000 rows=0 loops=1)" > > " -> Seq Scan on events_201509 (cost=0.00..181671.35 > > rows=3722635 > > width=220) (actual time=0.013..1682.899 rows=3389222 loops=1)" > > " -> Seq Scan on events_jobs (cost=0.00..276.40 rows=2840 > > width=316) (actual time=0.026..2.045 rows=2840 loops=1)" > > " -> Seq Scan on events_dbsizes (cost=0.00..2105.30 rows=53930 > > width=225) (actual time=0.003..74.458 rows=53930 loops=1)" > > " -> Seq Scan on events_diskspace (cost=0.00..0.00 rows=1 > > width=196) (actual time=0.000..0.000 rows=0 loops=1)" > > " -> Seq Scan on events_sqlserver_uptime (cost=0.00..3.94 > > rows=94 > > width=170) (actual time=0.014..0.053 rows=94 loops=1)" > > " -> Seq Scan on events_jobs_201509 (cost=0.00..21829.20 > > rows=224220 width=275) (actual time=0.003..727.342 rows=232047 > > loops=1)" > > " -> Seq Scan on events_jobs_201508 (cost=0.00..6.80 rows=80 > > width=291) (actual time=3.902..3.957 rows=67 loops=1)" > > " -> Seq Scan on events_jobs_201507 (cost=0.00..1.01 rows=1 > > width=281) (actual time=0.003..0.003 rows=1 loops=1)" > > " -> Seq Scan on events_jobs_201411 (cost=0.00..1.01 rows=1 > > width=285) (actual time=0.004..0.005 rows=1 loops=1)" > > " -> Seq Scan on events_jobs_201506 (cost=0.00..8.39 rows=39 > > width=295) (actual time=0.003..0.040 rows=39 loops=1)" > > " -> Seq Scan on events_dbsizes_201509 (cost=0.00..120743.85 > > rows=2990385 width=147) (actual time=0.015..8242.433 rows=2819164 > > loops=1)" > > " -> Seq Scan on events_diskspace_201509 (cost=0.00..5452.39 > > rows=161639 width=131) (actual
Re: [pgsql-es-ayuda] Criterio para crear indices
- Mensaje original - > > > > Esta es la parte del código donde se vuelve extremadamente lento > dentro del trigger: > > SELECT idevent FROM events WHERE ideventtype = > ANY(et.auto_close_on_event_defined) > AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND > idevent != NEW.idevent > > > El campo zu antes era tipo texto, lo cambie a bigint, eso mejoro un > poco pero sigue lento, no se que mas hacer. > Que campos debo indexar o que podria hacer? > > > /* > FOR idevent_for_close_on_restore IN SELECT idevent FROM events WHERE > ideventtype = ANY(et.auto_close_on_event_defined) > AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND > idevent != NEW.idevent LOOP > > INSERT INTO event_comments( > comment_event, status, > idevent) > VALUES ('Event closed for restoring event idevent '||NEW.idevent, 7, > idevent_for_close_on_restore); > > END LOOP; > */ > > > Todo esto pertenece a una aplicacion web de monitoreo de servidores y > aplicaciones (o algo asi), la he publicado en > http://openamsdemo-edwinspire.rhcloud.com/oams_contacts.php > > Aunque aun no esta la base de datos instalada. > > > Atte: > Edwin De La Cruz (edwinspire) > Quito - Ecuador Una de las reglas que suelen servir para definir la utilidad de un indice, es que el mismo componga o contenga una deficion parecida al "where" de tu select. Tal vez un indice por (idaccount, zu) Si "status = 0" representa una porcion pequeña de la tabla, entonces crear un indice parcial seria ventajoso tambien. Otra chance es que lo lento sean las inserciones en event_comments, y no el select previo. Toma ese select, reemplaza los "NEW.campo" por valores reales, y probalo separado del resto del trigger. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Criterio para crear indices
- Mensaje original - > De: "Edwin De La Cruz" <edwinsp...@gmail.com> > Para: pgsql-es-ayuda@postgresql.org > CC: "Gerardo Herzig" <gher...@fmed.uba.ar> > Enviados: Miércoles, 16 de Septiembre 2015 16:17:18 > Asunto: Re: [pgsql-es-ayuda] Criterio para crear indices > > El 16/09/15 a las 13:01, Gerardo Herzig escribió: > > /* > > >FOR idevent_for_close_on_restore IN SELECT idevent FROM events > > >WHERE > > >ideventtype = ANY(et.auto_close_on_event_defined) > > >AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND > > >idevent != NEW.idevent LOOP > > > > > >INSERT INTO event_comments( > > >comment_event, status, > > >idevent) > > >VALUES ('Event closed for restoring event idevent '||NEW.idevent, > > >7, > > >idevent_for_close_on_restore); > > > > > >END LOOP; > > >*/ > > Si dejo el codigo como se muestra a continuacion: > > FOR idevent_for_close_on_restore IN SELECT idevent FROM events WHERE > ideventtype = ANY(et.auto_close_on_event_defined) > AND status = 0 AND idaccount = NEW.idaccount AND zu = NEW.zu AND > idevent != NEW.idevent LOOP > /* > INSERT INTO event_comments( > comment_event, status, > idevent) > VALUES ('Event closed for restoring event idevent '||NEW.idevent, 7, > idevent_for_close_on_restore); > */ > END LOOP; > > igual se vuelve muy lento el script, probé hace unas semanas atras > con ANALIZE EXPLAIN y se demoró unos 40 segundos en correr, y eso > que solo era prueba. Lo que pude ver es que recorre todas las > particiones y las particiones de las particiones de la tabla events, > que de momento como dije son mas de 40 millones de registros > repartidos en unas 15 tablas. > El indice lo creo solo en la tabla padre o en todas las hijas, creo > que lo logico seria en todas las hijas, pues son las que contienen > datos. > Exacto, conviene hacerlo para todas las hijas. Puede que aun tenga que recorrer todas las particiones (depende del criterio qe hayas usado para particionar), pero la espectativa es que lo haga mas rapido si hay indices. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] instalar pldebugger en windows
Supongamos que el error se debe a que windows usa las contrabarras (como en la epoca del DOS). Si postgres no logro levantar la mecanica de "logging", entonces busca el archivo $PGDATA/serverlog, que contiene los errores que ocurran en esa instancia. Ese log te sabra contestar. Sino, levanta a mano utilzando los ejecutables (man postmaster), asi podes ver el error directamente en la terminal. HTH Gerardo - Mensaje original - > De: "jvenegasperu ."> Para: "Ayuda" > Enviados: Martes, 15 de Septiembre 2015 13:23:45 > Asunto: [pgsql-es-ayuda] instalar pldebugger en windows > > > > > > Buenos dias a todos > > he estado tratando de intalar el pldebugger en windows estoy > trabajando con un postgres 9.4 a instalado sobre windows 7 a 64 > > estoy siguiendo las instrucciones de este blog parecia un post muy > corto y sencillo. > > http://xdrtas.blogspot.pe/2011/02/0007-instalar-pldebugger-en-postgresql.html > > cuando agrego la linea > > > shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' > > > al reiniciar postgres ya no arranca alguien sabe de alguna > configuracion adicional que me podria estar faltando? > > > > > > > -- > > > > > > José Mercedes Venegas Acevedo > cel Mov RPM #955853768 > > mails: jvenegasp...@gmail.co m - 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
Re: [pgsql-es-ayuda] ayuda con OIDS en pg_class
- Mensaje original - > De: "Alessandra Campos Alfaro" <alessc...@gmail.com> > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > Enviados: Viernes, 11 de Septiembre 2015 21:43:42 > Asunto: Re: [pgsql-es-ayuda] ayuda con OIDS en pg_class > > > > > > > > Hola Gerardo > > a)Si se mira en en el pg_admin,la tabla company_user > tiene un OID 23444 Mmm OK. > b) si consulto > > select * from pg_class where relfilenode=23444 > no devuelve registos porque no encuentra el id > Hasta donde entiendo, tendrias que buscar "where oid=23444". Igualmente, pg_class tiene un campo "relname", que contiene el nombre de la tabla... Que aparece con select * from pg_class where relname = 'company_user'? Contesta a la lista por favor, asi todos pueden seguir el hilo. HTH Gerardo - 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
Re: [pgsql-es-ayuda] Buscar datos en detalle
Mmmm bueno que tal con select numero_formulario from (select numero_formulario, array_agg(producto) as array_productos_vendidos group by 1 ) foo where 'Naranja' != ALL(array_productos_vendidos); ? (Luego discutimos sobre performance :) Gerardo - Mensaje original - > De: "José Fermín Francisco Ferreras"> Para: "Lista PostgreSQL" > Enviados: Sábado, 12 de Septiembre 2015 19:52:25 > Asunto: [pgsql-es-ayuda] Buscar datos en detalle > > > Buenas tardes!! > > > Estoy teniendo problemas con una consulta. Resulta que necesito > consultar en dos tablas: > -Maestro > numero_formulario** > productor > fecha > hora > monto_total > > > detalles > numero_formulario*- > codigo_producto > producto > cantidad > > > Resulta que necesito buscar en cuales formularios no se facturó el > producto llamado "Naranja" > > > Lista de producto que se venden: > naranja > pera > piña > sandia > > > > > > ing. José Fermín Francisco Ferreras > San Francisco de Macorís, Rep. Dom. > - 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
Re: [pgsql-es-ayuda] ayuda con OIDS en pg_class
Sera mucho pedir las consultas exactas que estas haciendo? Suena un tanto extraño lo que decis. Gerardo - Mensaje original - > De: "Alessandra Campos Alfaro"> Para: "Lista Postgres ES" > Enviados: Viernes, 11 de Septiembre 2015 17:28:43 > Asunto: [pgsql-es-ayuda] ayuda con OIDS en pg_class > > > > > > > BUenas tardes > > estoy encontrando que en mi bd que el OID que tiene la tabla, no > corresponde con el OID(relfilenode) que esta en el catalogo pg_class > por lo que al parecer hay una falla en la actualziacion del pg_class > > UDs sabrian como se puede corregir esto?vpor ejemplo al tratar de > obtener el nombre de una tabla basada en su OID, no me devuelve nada > por que no encuenra el OID(relfilenode) en el pg_class > > agradezco si alguien me peude ayuda cone ste tema. > > > > > Aless > > > - 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
Re: [pgsql-es-ayuda] Saber cuantas tablas dependen de otra tabla
La vista pg_contraints seria un buen punto de partida: http://www.postgresql.org/docs/current/static/catalog-pg-constraint.html Puede tambien ser util hacer psql -E db_name. Luego, haciendo un \d nombre_tabla se expondran las consultas internas realizadas. Con un poco de trabajo, podras deducir como `psql' te muestra la conformacion de foreign keys. Otra opcion. Si las FK estan creadas como deferrables, puedes diferirlas al final de la transaccion. http://www.postgresql.org/docs/current/static/sql-set-constraints.html HTH Gerardo - Mensaje original - De: mauricio pullabuestan jmaurici...@yahoo.es Para: pgsql-es-ayuda@postgresql.org Enviados: Jueves, 27 de Agosto 2015 12:14:21 Asunto: [pgsql-es-ayuda] Saber cuantas tablas dependen de otra tabla Buen día. En una base de datos tengo una tabla con varias tablas dependientes es decir tengo declara integridad referencial entre estas tablas Estamos en proceso de desarrollo y migración, existe varios sistemas que están ocupando estas tablas, por varios motivos tenemos la necesidad de volver a migrar la tabla padre (por así decirlo) Tenemos un programa para migrar que: 1. inserta 2. elimina los datos actuales y luego inserta. Al ser ser una tabla padre que tienes tablas dependientes no me va a permitir eliminar los datos, como puedo mediante código conocer las relaciones de la tabla padre, para apagarlas y después de migrar volver a prender las relaciones, es posible hacer esto por código? Estamos conscientes que se van a presentar problemas, que tendríamos que arreglarlos al paso. Otra posible solución, sería crear tablas auxiliares, migrar datos y luego hacer un Merge, este proceso sería largo, tedioso y se tendría que hacer por cada tabla padre, es por eso que tratamos de automatizarlo mediante este programa. Los datos que se migran son tablas de Visual Foxpro y los nombres de los campos son completamente distintos, además de tener muchos campos, es por eso que nos apoyamos en un programa. Saludos. Mauricio - 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
Re: [pgsql-es-ayuda] consulta con join
Buenas Tardes Lista tengo una consulta que une dos tablas con un Join. Asi Select * from tabla_1 left join tabla_2 on tabla_2.id_tabla2=tabla1.id_tabla_2 where tabla_1.id_tabla_2 is not null Pero cuando hago esta la consulta, demora mas que cuando la hago de esta forma: Select * from tabla_1 left join tabla_2 on tabla_2.id_tabla2=tabla1.id_tabla_2 where tabla_2.id_tabla_2 is not null Alguien pudiera ayudarme a entender cual es la diferencia y como opera el join que pueda hacer que tarde mas una consulta que la otra? pues me temo que tengo varias consultas mas formuladas en este aspecto. Aless La manera mas simple que se me ocurre, es que en tabla_2 haya mas registros que en tabla_1. La aproximacion a este tipo de problemas suele comenzar con el analisis del plan de ejecucion. La sentencia EXPLAIN [1] hace eso. Hace un EXPLAIN ANALYZE de ambos selects, y a partir de ahi hay que estudiar un poco las diferencias a nivel de plan. [1] http://www.postgresql.org/docs/current/static/sql-explain.html HTH Gerardo - 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
Re: [pgsql-es-ayuda] Loggear consultas de triggers
Yo en esos casos de apuro opto por el depurador del hombre pobre: Encierro las partes que quiero depurar con inicio = clock_timestamp(); .. .. [codigo codigo] fin = clock_timestamp(); raise notice 'tiempo de bloque de ejecucion = %', fin - inicio; Tambien podrias, claro, guardar los tiempos en una tabla. Supongo que con un par de iteraciones lograras encontrar la parte lenta. HTH Gerardo - Mensaje original - De: motum hesa mot...@gmail.com Para: Lista PostgreSQL pgsql-es-ayuda@postgresql.org Enviados: Miércoles, 19 de Agosto 2015 17:14:44 Asunto: [pgsql-es-ayuda] Loggear consultas de triggers Buenas tardes. Actualmente en un servidor estoy teniendo unos problemas pues un Insert está tardando más de 5 segundos, esta tabla tiene un trigger AFTER INSERT en este trigger se realizan algunos cálculos y consulta a otra tabla, una vez realizado los datos que están aquí son insertados a otra tabla, esta otra tabla a su vez tiene un trigger BEFORE INSERT, este es el trigger más pesado (más de 2 mil lineas) y realiza consultas, llamadas a funciones y al final inserta los datos procesados a una tabla histórica. Desgraciadamente el log de PostgreSQL sólo me dice que el INSERT está tardando mucho, me gustaría saber qué consultas dentro del trigger están tardando tanto para poder empezar a optimizarlas,¿es esto posible?. Intente con log_statement=all pero no me sirivió mucho Estoy usando PostgreSQL 9.3.8 en FreeBSD 10.1 Muchas gracias de antemano. - 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
Re: [pgsql-es-ayuda] Equivalente de @@TRANCOUNT en postgresql
- Mensaje original - De: mauricio pullabuestan jmaurici...@yahoo.es Para: PostgreSQL Lista Castellano pgsql-es-ayuda@postgresql.org Enviados: Viernes, 7 de Agosto 2015 12:16:43 Asunto: [pgsql-es-ayuda] Equivalente de @@TRANCOUNT en postgresql Buen día. Estoy revisando una aplicación que utiliza Postgresql 9.4, al parecer esta dejando abierto un begin transaction, con Sql Server utilizo @@TRANCOUNT para saber si existe una transacción, cual sería el equivalente en PostgreSql. La vista pg_stat_activity es tu amiga. En 9.4, la columna state en 'idle in transaction' deberia corresponderse con un backend que hizo un BEGIN, no ha cerrado la conexion, y se encuentra oscioso. Con la columna pid, client_addr, application_name puedes tener mejor certeza de cual es el aplicativo que se esta comportando de esa manera. http://www.postgresql.org/docs/9.4/static/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW HTH Gerardo - 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
Re: [pgsql-es-ayuda] error en el cambio de estructura
Cuando quise cambiar el tipo de dato de una tabla no me permitia ya que tengo vistas vinculadas. Busque en la red algo que me permita modificar el campo y no tenga problemas con las vistas creadas; encontre este codigo : UPDATE pg_attribute SET atttypmod = 15+2 WHERE attrelid = 'mesas'::regclass AND attname = 'mesa'; Lo ejecuta bien Ahora, probando me muestra un dato en la tabla y otro dato en la vista... Por ejemplo : en la tabla : 1020301 y en la vista 102030111 Que paso ?? o que es lo mas recomendable o como se maneja en todo caso la tabla pg_attribute O si hay alguna otra manera de modificar la estructura y que no haya problemas con la vistas... Paso que te metiste con las internas de postgres.Tablas como pg_attribute manejan la meta-data de la base de datos. Lo aconsejable es usar el comando adecuado (SQL), como ALTER TABLE. Si esto colisiona con una definicion de una vista, entonces lo mas prudente es DROPear la/s vistas, hacer el cambio en la tabla, y luego recrear la vista. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Problemas para cargar grandes bases de datos desde archivos .csv
(Por favor recuerda postear a la lista) GRACIAS por la información, efectivamente algo andaba mal con los archivos. La verdad no se que es. dividi el archivo segun casos y en una me funciono de una, al probar de nuevo ya no al final me manda error con el tipo de los datos no es integer. Cuando mencionas un error, por favor copia y pega *exactamente* cual es el error, y *exactamente* que comando estas ejecutando. Como el archivo es muy grande los abro con el SPSS y de ahi lo grabo en CSV cuando le elimino las variables que no me interesan etc. Am...no tengo idea de que es SPSS :/ Estoy entrando en colapso yaeste tipo de comando genera algun log? porque si supiera que variable de las que estan en el archivo dan problemas podria tratar de arreglarlo. El tema que cuando lo abro con el excel y trato de grabarlo de nuevo no me deja porque genera datos incompatibles con CSV... Te invito a revisar la configuracion de tu servidor, donde (y que) se guarda. Comienza por aqui: http://www.postgresql.org/docs/current/static/runtime-config-logging.html Conoces alguna forma de editar el archivo de manera que no me afecte al querer grabarlo...? Linux + vi? Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Problemas para cargar grandes bases de datos desde archivos .csv
- Mensaje original - De: Paola Alejandra de Montserrat Cordero Bon paola.corder...@gmail.com Para: pgsql-es-ayuda@postgresql.org Enviados: Viernes, 12 de Junio 2015 2:57:33 Asunto: [pgsql-es-ayuda] Problemas para cargar grandes bases de datos desde archivos .csv Estimados: Después de mucho buscar y experimentar script ejecute la siguiente para poder cargar archivo .CSV con alrededor de 3.500.000 de registros. El comando que utilice en psql fue: -c \copy tabla from dato.csv using delimiters ';' with header csv el problema que ya lleva dos horas y no tengo idea de si esta trabajando bien o solo esta en un loop agradeceria me pudieran ayudar...tengo muchos otros archivos que cargar. Puntualizando en tu inquietud: Para saber si la copia esta realmente ejeutandose, podes hacer un select * from pg_stat_activity. De ahi, obtenes el pid del COPY, y ejecutar un strace desde el SO, y ver si el proceso se esta moviendo. Otra columna interesante de pg_stat_activity es waiting, lo cual te indica si el COPY esta activo, o a la espera de algo. Tambien puede haber una falta de configuracion, triggers en ejecucion, otras consultas en curso, etc etc etc. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] optimizacion
Asi como se veme suena a un SELECT... from ...GROUP BY unidad, tipo_servicio junto con un crosstab (para convertir filas en columnas) http://www.postgresql.org/docs/9.4/static/tablefunc.html HTH Gerardo - Mensaje original - De: Esneiker Enriquez Cabrera eenriq...@cav.desoft.cu Para: POSTGRES pgsql-es-ayuda@postgresql.org Enviados: Lunes, 8 de Junio 2015 9:20:02 Asunto: [pgsql-es-ayuda] optimizacion Saludos a todos los amigos de la comunidad. Les escribo porque tengo un problema y no logro encontrar una buena forma de resolverlo. Tengo una función para obtener reportes estadísticos donde debo retornar el nombre de las unidades organizativas, los nombres de los tipos de servicios y los totales, de la siguiente forma: Unidad Tipo de servicio T1 T2 T3 T4 El problema es que entre la tabla de unidades organizativas y tipos de servicio no hay relación directa, sino a través de otras tablas del negocio. Necesito tirar todas las unidades contra todos los tipos de servicio. La solución que he dado hasta el momento es con un ciclo for recorrer la tabla tipo de servicio e ir calculando los totales e irlos insertando en una tabla temporal para al final devolver los valores, donde evidentemente esto provoca problemas de rendimiento, el código es el siguiente(cortado para no abrumar): for aid_elemento,adescripcion from vw_nmtipo_servicio order by tipo_servicio loop SQLText = 'INSERT INTO estadistico SELECT id, nombre, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia WHERE ...) AS t1, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t2, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t3, (SELECT COUNT(distinct vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia ...) AS t4 '''||adescripcion_elemento||'''::character varying as criterio1 FROM nmunidad_org WHERE (nmunidad_org.id IN ('||alista_id_nivel||'))'; execute SQLText; SQLText = ''; end loop; Espero que me puedan dar alguna recomendación para optimizar el diseño. Saludos, M.Sc. Esneiker Enriquez Cabrera Esp. B en Ciencias Informáticas Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila. Cuba. Telf.: 53 33 22 8971, email.: eenriq...@cav.desoft.cu __ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 11728 (20150603) __ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.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
Re: [pgsql-es-ayuda] BDR
- Mensaje original - De: Guillermo E. Villanueva guillermo...@gmail.com Para: pgsql-es-ayuda pgsql-es-ayuda@postgresql.org, Alvaro Herrera alvhe...@2ndquadrant.com, Jaime Casanova ja...@2ndquadrant.com CC: Martin Diaz mardia...@yahoo.com.ar Enviados: Jueves, 4 de Junio 2015 15:53:42 Asunto: [pgsql-es-ayuda] BDR Buenas tardes, hace un tiempo , cuando recién salía BDR pude realizar unas pruebas y la replicación bidireccional funcionó perfectamente. Hasta ese momento no se podía implementar en una topología estrella y quería saber si ahora se puede o sigue siendo una función no considerada con BDR. Me refiero a topología estrella a un servidor central A y otros servidores B, C, D ... conectados a A. (no hay conexión entre los demas servidores) Todos pueden hacer modificaciones las cuales las replican solo hacia A y luego A las redistribuye a los demas. Si no se puede con BDR, es posible hacerlo con otra herramienta? Saludos! Y desde ya muchas gracias por sus comentarios. Con slony es posible simular esa clase de trabajo. Para simplificar, supongamos un centro de estrella C, y tres sucursales, X, Y, Z, y una unica tabla a replicar. La idea es particionar la tabla por un campo identificatorio de sucursal, supongamos sucursal_id? De modo qeu la tabla contenga tantas particiones como sucursales. A nivel local, cada sucursal actualiza los datos dentro de la particion asignada a dicha sucursal. Entonces...via slony pueden manejarse las particiones subyacentes, de modo que: X replica su particion hacia C, y luego C propaga (forwardea) esos cambios hacia Y y Z Y replica su particion hacia C, y luego C propaga hacia X y Z, Z replica su particion hacia C, y luego C propaga hacia X e Y De esa forma consigues un simil replicacion estrella. Se entiende? HTH, Gerardo - 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
Re: [pgsql-es-ayuda] retornar una tabla dinámica
En postgres, las funciones deben tener un tipo de retorno dado, fijo, no variable. No se puede asignar dinamicamente un conjunto de campos de salida. Saludos, Gerardo - Mensaje original - De: Freddy Martinez Garcia freddy311...@gmail.com Para: PostgreSQL Lista Castellano pgsql-es-ayuda@postgresql.org Enviados: Jueves, 28 de Mayo 2015 15:16:47 Asunto: [pgsql-es-ayuda] retornar una tabla dinámica Hola lista… supongamos que tenga el siguiente procedimiento almacenado create or replace function dynamic_table() returns table (id integer, name text, fecha1 date, fecha2 date) as $$ begin - - aqui la definicion de funcion end; $$ language plpgsql; ahora, el problema que tengo es que los datos de retornos tengo que construirlos, es decir, necesito ir haciendo varios queries en varias tablas que incluso, no tienen relaciones entre sí, porque los datos que yo devuelvo en esta función son el resultado de un procesamiento que hago internamente dentro del procedimiento. hasta el momento lo que yo siempre he hecho es devolver el resultado de un query, pero nunca he creado dinámicamente el resulset que voy a retornar y luego devolverlo al final de la consulta, que esto es exactamente lo que yo necesito hacer… ¿cómo hago esto? ¿cuál sería la mejor manera de hacerlo? gracias a todos = El tamaño de tus logros depende del tamaño de tus metas. C++ and Qt Senior Developer Lic. Computer Science Buenos Aires, Argentina - 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
Re: [pgsql-es-ayuda] arreglo de text
select * from arreglo_string(array['valor1', 'valor2']) , o select * from arreglo_string('{''valor1'', ''valor2''}') Yo me siento mas comodo con la primer forma. Saludos, Gerardo - Mensaje original - De: Freddy Martinez Garcia freddymg311...@gmail.com Para: PostgreSQL Lista Castellano pgsql-es-ayuda@postgresql.org Enviados: Miércoles, 27 de Mayo 2015 16:32:22 Asunto: [pgsql-es-ayuda] arreglo de text hola lista, mis saludos a todos necesito pasar un array de text a un procedimiento almacenado, el tema es que cuando invoco el procedimiento, no me queda claro cómo definir que las comillas forman parte de la cadena, es decir… por ejemplo create or replace function arreglo_string(valor text[]) returns void as $$ begin — hacer cualquier cosa con arreglo de text end; $$ language ppgsql; el problema está a la hora de llamar esta función… debería ser algo así: select * from arreglo_string(‘{‘valor 1’, ‘valor 2'}’) esto obviamente es un error sintáctico, porque las comillas se cierran entre valores… mi pregunta es: ¿cómo paso un arreglo de valores varchar o text a una función como esta? saludos cordiales = El tamaño de tus logros depende del tamaño de tus metas. C++ and Qt Senior Developer Lic. Computer Science Buenos Aires, Argentina - 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
Re: [pgsql-es-ayuda] Ayuda para optimizar consulta
- Mensaje original - De: Guillermo E. Villanueva guillermo...@gmail.com Para: gilberto castillo gilberto.casti...@etecsa.cu CC: pgsql-es-ayuda pgsql-es-ayuda@postgresql.org Enviados: Viernes, 8 de Mayo 2015 8:24:20 Asunto: Re: [pgsql-es-ayuda] Ayuda para optimizar consulta Buenos días, les cuento que hice varias pruebas, entre ellas crear un índice en ambas tablas del join con las columnas: uploaddet_importcomp * fil_ clasedoc * fil_ tipodoc * fil_ nrodoc * fil_ nacim historicotemp * aficlasedoc * historicotemp.afitipodoc * historicotemp.afidni * historicotemp.afifechanac También probé haciéndo un índice con las columnas concatenadas, de todas maneras el planificador siempre decía que iba a hacer un seq scan y un sort por esos campos. Solo fue un poco mas rápido cuando cambié de left a inner así que tuve que cambiar la lógica de la aplicación. Una pregunta concreta, ¿hay algún índice que se pueda crear con estas columnas para que el planificador lo aproveche y mejore la performance? No necesariamente. Si el where de la consulta devuelve una parte significativa de la tabla, entonces seguramente el planificador decidira que es mas performante leer directamente (de manera secuencial) de la tabla, para luego aplicarle un filtro. Para corroborar las velocidades secuencial vs index, intenta leer sobre estas variables: set enable_indexscan set enable_bitmapscan set enable_seqscan Para que puedas comprobar empiricamente las alternativas del planificador. Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] TRIGGER EN POSTGRES
[Para hacer una consulta diferente, por favor crea un nuevo mail, asi no se mezclan los topicos] DUDA: Sabes tengo una duda espero me pudieras apoyar ... si quiero desactivar las llaves hay algun comando como en mysql, que me permita desactivar las llaves de todas las tablas , hacer una actividad y despues activarlas de nuevo.?? Si te refieres a deshabilitar las Foreign Keys, entiendo que no se pueden deshabilitar. Hay formas programaticas de volcar su definicion a un archivo de texto, para luego poder eliminar las FK, hacer lo que deseas, y recrear las FK, como en [1]. Si buscas deshabilitar unicamente los triggers, podes ejecutar el siguiente comando: ALTER TABLE nombre_tabla DISABLE TRIGGER ALL; [hacer el trabajo que quieres, y luego] ALTER TABLE nombre_tabla ENABLE TRIGGER ALL; HTH Gerardo - 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
Re: [pgsql-es-ayuda] TRIGGER EN POSTGRES
Buena tarde Por medio del presente les pido apoyo, ya que tengo un problema, tengo dos tablas: esquema_pago y esquema_pago_backup , en mysql tengo un trigger que cuando se insertan datos en la tabla esquema_pago, se insertan tambien en esquema pago backup, migre la base y estoy tratando de poner lo mismo en postgres , ya cree una funcion y el trigger pero no me copia los datos a la tabla de esquema_pago_backup, espero que me puedan hechar la mano, soy nueva en postgres. [...] CREATE OR REPLACE FUNCTION educaciondistancia.inserta_esquema_pago_backup() RETURNS trigger AS $BODY$ BEGIN NEW.curso := NEW.curso; NEW.numPago := NEW.numPago; NEW.montoPagar := NEW.montoPagar; NEW.estatus := NEW.estatus; NEW.usuario := NEW.usuario; NEW.fecha := NEW.fecha; RETURN NEW; END $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION educaciondistancia.inserta_esquema_pago_backup() OWNER TO postgres; Perdon, si no me engaña la vista, no veo ningun insert en la funcion inserta_esquema_pago_backup(). Verdad? HTH Gerardo - 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
Re: [pgsql-es-ayuda] Utilidad o herramienta para estimación de crecimiento de bases de datos
La funcion pg_database_size() existe desde la version 8.1. La variante para el tamaño de las tablas es pg_relation_size() Saludos, Gerardo - Mensaje original - De: Marcos Ortiz mlor...@uci.cu Para: pgsql-es-ayuda@postgresql.org Enviados: Jueves, 19 de Febrero 2015 10:31:34 Asunto: [pgsql-es-ayuda] Utilidad o herramienta para estimación de crecimiento de bases de datos Saludos a toda la lista. Estamos en el desarrollo de una nueva aplicación con PostgreSQL 9.4 y necesitamos hacer la estimación del crecimiento de la base de datos. La vía tradicional es recorrer cada uno de los campos de cada tabla, ver su tipo de dato y ver cuánto espacio ocupa cada uno, luego ver con todos los campos cuánto se lleva la tupla, y luego repetir este proceso por cada una de las tablas. Pero pienso que debe haber alguna utilidad o herramienta moderna para realizar esto de forma automatizada y rápida. ¿Conocen de alguna herramienta enfocada en este problema? - 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
Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
- Mensaje original - De: Jaime Casanova ja...@2ndquadrant.com Para: Gerardo Herzig gher...@fmed.uba.ar CC: Hellmuth Vargas hiv...@gmail.com, Lista Postgres ES pgsql-es-ayuda@postgresql.org Enviados: Martes, 3 de Febrero 2015 1:24:08 Asunto: Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR 2015-01-30 18:56 GMT-05:00 Gerardo Herzig gher...@fmed.uba.ar: Probaste con postgres-xc? Es un postgres modificado para usarse en entornos distribuidos, con soluciones nativas de replicacion y balanceo. Tal vez pueda ser util aqui. Como maneja postgres-xc el problema de las secuencias? no encontré nada concreto pero me imagino que asigna los valores a través del GTM (el cual no es solo un punto central de fallas sino también un posible cuello de botella). Exacto Jaime. Y ciertamente, en situaciones de alta carga es candidato a convertirse en cuello de botella. Lo que se recomienda en esos casos es usar un gtm proxy para alivianar la carga del gtm. http://postgres-xc.sourceforge.net/docs/1_1/app-gtm-proxy.html Saludos, Gerardo - 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
Re: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR
Probaste con postgres-xc? Es un postgres modificado para usarse en entornos distribuidos, con soluciones nativas de replicacion y balanceo. Tal vez pueda ser util aqui. http://sourceforge.net/projects/postgres-xc/ Saludos, Gerardo - Mensaje original - De: Hellmuth Vargas hiv...@gmail.com Para: Lista Postgres ES pgsql-es-ayuda@postgresql.org Enviados: Viernes, 30 de Enero 2015 6:27:22 Asunto: [pgsql-es-ayuda] Fwd: consulta sobre sequencias globales de BDR Hola lista No llego el anterior correo, lo reenvío.. -- Mensaje reenviado -- De: Hellmuth Vargas hiv...@gmail.com Fecha: ene 29, 2015 2:49 AM Asunto: consulta sobre sequencias globales de BDR Para: Lista Postgres ES pgsql-es-ayuda@postgresql.org Cc: Hola Lista: Estoy realizado pruebas con BDR de PostgreSQL anunciado recientemente, comparto una hilo de conversación que sostuve con Jaime Casanova, entre otros, sobre el tema especifico del comportamiento de secuencias globales. La inquietud surge porque trabajo en un call center donde se realizan miles de transacciones por segundo de diferentes clientes a un único cluster de base de datos PostgreSQL (con replicacion asincronica obviamente), y por balanceo de carga, disponibilidad, seguridad entre otros, seria extraordinario contar con la replicacion multimaster. -- Buenos días Actualmente me encuentro realizando una prueba con BDR, para esto he seguido las pautas descritas en https://wiki.postgresql.org/wiki/BDR_Quick_Start luego ejecute las siguientes sentencias: bdrdemo=# CREATE SEQUENCE seq_tabla2 USING bdr; CREATE SEQUENCE bdrdemo=# create table prueba2(id bigint primary key default nextval('seq_tabla2'), origen text); CREATE TABLE --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,1) as a(id); INSERT 0 2 -- Acontinuación envío estas dos sentencias cada una en cada uno de los servidores: --servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. --servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. y genera el error que hay se presenta, toca esperar un buen tiempo para que vuelva a estar disponible -- servidor 1 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2a'); nextval - 10001 (1 row) -- servidor 2 bdrdemo=# select nextval('seq_tabla2'); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. bdrdemo=# select nextval('seq_tabla2'); nextval -- 14314001 (1 row) -- pero trato nuevamente de enviar el insert masivo y vuelve a generar error: -- servidor 1 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. -- servidor 2 bdrdemo=# insert into prueba2(origen) select '' from generate_series(0,2) as a(id); ERROR: could not find free sequence value for global sequence public.seq_tabla2 HINT: The sequence is refilling from remote nodes. Try again soon. Check that all nodes are up if the condition persists. La pregunta es si este comportamiento es normal? o debo configurar algo adicional o estoy haciendo algo mal? LE agradezco de antemano su atención, colaboración y tiempo --
Re: [pgsql-es-ayuda] Off-Topic: Herramienta para monitorizar PostgreSQL
Podrias decirnos que tiene tu herramienta que no posean las otras que viste? Yo acostumbro usar collectd, y tiene un plugin para postgres, que permite tomar la informacion de la que hace mencion el README (ademas del otro centenar de cosas que hace collectd, claro) Saludos, Gerardo Para: pgsql-es-ayuda@postgresql.org Enviados: Viernes, 28 de Noviembre 2014 11:55:26 Asunto: [pgsql-es-ayuda] Off-Topic: Herramienta para monitorizar PostgreSQL Buenas comunidad, por estos días estoy intentando desarrollar una herramienta para monitorizar PostgreSQL, no queria reinventar la rueda, pero las herramientas que vi no me daban algunos detalles que necesitaba, y entonces puse manos a la obra y intenté construir la propia, la cual quiero compartir con ustedes para obtener una retroalimentación de sus comentarios. La misma esta en:https://github.com/asotolongo/amt4pg No es una versión liberada, es algo así como un beta beta Las pruebas que realicé con la misma fue en Ubuntu 14.04. Saludos Proceso de Acreditación de la Maestría en Gestión de Proyectos Informáticos. En busca de la Excelencia. Del 24 al 28 de noviembre de 2014. - 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
Re: [pgsql-es-ayuda] Error de constraint
Lo primero que van a pedirte, como minimo, es que muestres la descripcion de las tablas implicadas (segun lo ve postgres, por ejemplo con el comando \d nombre_tabla de psql), y una consulta (la mas pequeña que reproduzca el error), que muestre el problema. De lo contrario, solo puede pasar que a) Solo te contestaran los que posean bolas de cristal, o b) piensen (a veces acertadamente) que es algun error de quien suscribe, y directamente no contestaran tu consulta. HTH Gerardo - Mensaje original - De: Juan smalltalker.marc...@gmail.com Para: Ayuda pgsql-es-ayuda@postgresql.org Enviados: Viernes, 29 de Agosto 2014 16:20:26 Asunto: [pgsql-es-ayuda] Error de constraint Gente Tengo el siguiente escenario, tengo una tabla A que tiene un campo que tiene una constraint hacia otra tabla B , en teoria no puedo ingresar registros a la tabla A si en cierto campo pongamos nombre_de_algo no está en la tabla B en el campo nombre_de_algo pero una querie con not in me mustra nombres_de_algo que no estan en la tabla B, no deberia porque viola la contraint. alguna idea? version de postgres 9.1 en windows. gracias saludos jmdc - 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
Re: [pgsql-es-ayuda] Como calcular la volumetria de crecimiento en tiempo de una base de datos PostgreSQL
Alfredo: Los datos que devuelve pg_relation_size (y otras similares) se basan en datos estadisticos. Si reportan tamaños diferentes, puede simplemente que una este mejor actualizada que la otra, en terminos de sus analisis estadisticos. Entonces, comienza por hacer caso a los consejos de la gente que sabe, como Jaime, y ejecuta un VACUUM ANALYZE en ambos servidores. Luego, si quieres, puedes leer sobre las estadisticas internas de postgres en http://www.postgresql.org/docs/9.3/static/monitoring-stats.html Saludos. Gerardo - Mensaje original - De: Alfredo Rico alfredor...@gmail.com Para: Postgresql pgsql-es-ayuda@postgresql.org Enviados: Martes, 8 de Abril 2014 13:16:47 Asunto: [pgsql-es-ayuda] Como calcular la volumetria de crecimiento en tiempo de una base de datos PostgreSQL Buen día amigos reciban un cordia saludo. Hemos desarrollado una aplicación para banca en donde hay varias tablas del negocio en las que se estiman cargas diarias. Pongo algunas relaciones para dar una idea 1 CLIENTES tiene 1 o muchas CUENTAS 1 CUENTAS tiene 1 o muchas MOVIMIENTOS_CUENTA por dia (cada día llegará nueva informaciónque se discrima por una columna FECHA_DE_DATOS) - 1 CLIENTES tiene 1 o muchas CREDITOS 1 CREDITO tiene 1 o muchas TRANSACCIONES_CREDITOS por día (cada día llegará nueva informaciónque se discrima por una columna FECHA_DE_DATOS) - Cada tabla tiene diferentes columnas con tipos VARCHAR, NUMERIC, DATE BOOLEAN en esencia. Si se conociera la cantidad de transacciones diarias en promedio para las CUENTAS o para los CREDITOS de que forma puedo estimar una volumetría lo más acertada posible que me diga que en X tiempo se debe considerar aumentar los storage. También tengo este caso particular que me causó mucha confusión. Tengo dos aplicaciones instaladas en dos bancos diferentes. Dejé la tabla MAESTRO_CLIENTES con 500.000 registros en ambas bases de datos (fisicamente distantes y disconexas entre ellas) y la función pg_size_pretty me reporta en una de ellas 46 MB y en la otra 185MB (siendo ambas tablas con la misma estructura DML) teniendo la misma cantidad de registros. Por favor agradezco sus consejos y alguna documentación que me recomienden en la que me pueda apoyar. Muchas gracias de antenamo. -- Saludos Cordiales.- Alfredo Rico. San Cristóbal - Venezuela. - 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
Re: [pgsql-es-ayuda] fzpgloader
El vie, 21-10-2011 a las 17:47 +0100, Alejandro Carrillo escribió: http://code.google.com/p/fzpgloader/ Sus sugerencias han ayudado a crear esto. Espero sus opiniones. Si entendí el mecanismo, hay que modificar el archivo de configuracion cada vez que se requiere importar una tabla desde un archivo diferente? Si es asi, no parece muy practico. En lo mas mínimo. Lo habitual en estos casos es que esa clase de parametros vengan bien como parametros en la llamada al programa (desde linea de comandos) , o bien que la interface lo pregunte de manera interactiva (en modo gui). No veo con claridad (en la documentacion) que formato tiene que tener el archivo de origen, si permite que el primer renglon sean los nombres de los campos, que pasa si la tabla destino ya existe, etc. En las fuentes podrias incluir un archivo de ejemplo, y que lo suba a una tabla, asi no tengo que estar probando yo. Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] Ayuda en error de funcion en postgres
El vie, 13-05-2011 a las 08:08 -0500, yanguma escribió: Buenos dias, Tengo el siguiente error en una funcion de postgres ERROR: numeric field overflow DETAIL: A field with precision 16, scale 2 must round to an absolute value less than 10^14. CONTEXT: PL/pgSQL function mov_inv_actividad line 5047 at assignment ** Error ** ERROR: numeric field overflow SQL state: 22003 Detail: A field with precision 16, scale 2 must round to an absolute value less than 10^14. Context: PL/pgSQL function mov_inv_actividad line 5047 at assignment Hola Ricardo: Busca la/s lineas donde se esten formateando/casteando numeros: ej select valor::numeric(16,2) select to_number(,'.99') O cosas asi. Basicamente te esta diciendo que el numero a representar es mas grande que la mascara que le estas aplicando. Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] coincidencias en postgres?
El jue, 24-02-2011 a las 16:44 -0600, Daniel Juárez escribió: Hola que tal, queria preguntarles si existia ya algo implementado en postgres para detectar errores de dedo? esto es, que el sistema manejador me de palabras parecidas a la que recibe como un quiza quiso decir con un query, no se queria ver si habia algo que me sirviera para esta tarea o tengo que aventarmelo a pata. De antemando muchas gracias y ojala me puedan contestar. Daniel Juárez Cruz Si entendi la pregunta, creo que lo que se le parece es la funcion de levenshtein[0]. Hay varias implementaciones por ahi dando vueltas, supongo que podrias probarla. [0] http://www.postgresql.org/docs/9.0/static/fuzzystrmatch.html Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] uso de select (function()).* es mucho mas lento que select * from function()
El mié, 09-02-2011 a las 14:20 -0300, Alvaro Herrera escribió: Excerpts from Gerardo Herzig's message of jue feb 03 15:45:38 -0300 2011: Hola chicos. Estoy teniendo problemas con la lentitud de una funcion. Estoy usando la funcion _xxfunction() dentro de un subselect, entonces uso su forma select (_xxfunction()).* (en lugar de select * from..., sino dentro del subquery me genera error sintactico), y el tema es que tarda mucho mas un modo que el otro: test=# SELECT (_xxfunction(123)).* ; (4 filas) Duración: 1069,465 ms test=# SELECT * from _xxfunction(123) ; (4 filas) Duración: 228,699 ms Alguna idea de porque de esto? Alguna alternativa? Gracias! Si mal no recuerdo, al hacer ().* se ejecuta la función tantas veces como columnas haya en el resultado. Quizás funcione algo como select foo.* from (select * from _xxfunction(123) offset 0) as foo; Gracias Alvaro, si, tenes razon, pasa que no exprese bien mi problema, que es ligeramente distinto (creo) Yo tengo que lograr algo como select * from _xxfunction(codigo) from (select codigo from tabla) Y esto tiene un error de sintaxis. Si uso la forma select (_xxfunction(codigo)).* from (select codigo from tabla) elimino el error sintactico, pero como bien decis, llamo muchas veces a la funcion, y se torna demasiado lento. Y no logro dar con el modo correcto para evitar el uso de (f()).* Gracias! Gerardo - 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
[pgsql-es-ayuda] uso de select (function()).* es mucho mas lento que select * from function()
Hola chicos. Estoy teniendo problemas con la lentitud de una funcion. Estoy usando la funcion _xxfunction() dentro de un subselect, entonces uso su forma select (_xxfunction()).* (en lugar de select * from..., sino dentro del subquery me genera error sintactico), y el tema es que tarda mucho mas un modo que el otro: test=# SELECT (_xxfunction(123)).* ; (4 filas) Duración: 1069,465 ms test=# SELECT * from _xxfunction(123) ; (4 filas) Duración: 228,699 ms Alguna idea de porque de esto? Alguna alternativa? Gracias! Gerardo - 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
[pgsql-es-ayuda] rows - array
Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente: Una funcion que me permita convertir un row (resultante de una funcion determinada) y me devuelva un array con los valores de las columnas (casteado, digamos, a text), y no logro dar con la tecla. Lo ideal seria que el recorset que reciba esta funcion pueda ser generico, asi puedo utilizarlo para 'arraysear' resultados que provienen de diferentes funciones. Se entiende? Tambien podria ser una funcion que devuelva los campos concatenados, pero de nuevo, tendria que ser generica para cualquier recordset que esta funcion reciba. Estoy en 8.3. Pistas? Gerardo - 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
Re: [pgsql-es-ayuda] rows - array
On 11/26/2010 06:51 PM, Alvaro Herrera wrote: Excerpts from Gerardo Herzig's message of vie nov 26 17:33:40 -0300 2010: Hola chicos: Estoy buscando, en 8.3, algo como lo siguiente: Una funcion que me permita convertir un row (resultante de una funcion determinada) y me devuelva un array con los valores de las columnas (casteado, digamos, a text), y no logro dar con la tecla. Lo ideal seria que el recorset que reciba esta funcion pueda ser generico, asi puedo utilizarlo para 'arraysear' resultados que provienen de diferentes funciones. Se entiende? Instala contrib/hstore y examina las funciones que provee. Al menos en 9.0 puedes construir lo que quieres desde las piezas que hay ahí. En 8.3 hstore es harto más primitivo, pero quizás se pueda de todas formas. Si no, quizás puedas hacer un backport del hstore de 9.0 a 8.3 (creo que existe en pgfoundry, no estoy seguro). Gracias como siempre Alvaro, pero tengo limitaciones a la hora de instalar programas 'auxiliares'. Incluso tengo limitantes de no usar plpython, solo sql y pl/sql. Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] Cargar datos como fecha
Sergio Valdes Hurtado wrote: Estimados, tengo que cargar una serie de datos (alrededor de 300.000) desde un archivo de texto a una tabla y lo haré con copy from, pero mi problema real es que hay dos campos que me gustaría cargarlos como fecha, pero desde el origen traen sólo el mes y el año (07/2010) . ¿qué puedo hacer para cargarlos como fecha? Gracia de antemano por su ayuda Si el campo de fecha es unicamente identificable (o sea, eso de MM/ aparece siempre en la misma parte del renglon), supongo que podrias pasarle alguna herramienta del tipo sed o awk para modificar el contenido del archivo. Algo como... gher...@comechingon:~ cat archivo.txt INSERT INTO fechas values ('07/2010'); INSERT INTO fechas values ('12/2009'); gher...@comechingon:~ sed 's!\([0-9]*\)/\([0-9]*\)!01/\1/\2!' archivo.txt INSERT INTO fechas values ('01/07/2010'); INSERT INTO fechas values ('01/12/2009'); Un poco esoterico, no? Pero algo asi te sirve? HTH Gerardo - 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
[pgsql-es-ayuda] estadistica de uso del cache
Hola chicos: Tengo una funcion un tanto grande, la cual repetidas veces a una funcion X con distintos parametros, los cuales muchas veces se repiten. Es decir, muchas veces se realizara la misma llamada a la funcion con los mismos parametros. Esa funcion X la tengo definida como STABLE, para ver si aprovecha a usar el resultado del cache. La pregunta es: Tengo alguna posibilidad de saber si efectivamente esta usando esos resultados sacandolos del cache? Gracias! Gerardo - 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
Re: [pgsql-es-ayuda] duda con funciones
Esneiker wrote: Hola a todos, hace varios días hice una consulta al foro sobre una duda con las funciones de postgres y no recibí ninguna respuesta, por favor si alguien sabe como hacer lo que plantea más abajo le agradecería que me indicara una posible solución porque lo que pregunto es muy fácil de hacer en otros gestores de base de datos pero hacerlo en postgres me está resultando muy difícil. He aquí la duda enviada anteriormente: El caso es que tengo una función en la cual retorno un cursor con el resultado de una consulta y desde mi aplicación la llamo usando el fetch all in, pero necesito que dicha función además de devolver el resultado de una consulta me devuelva también valores en parámetros de salida, ejemplo, la función me devuelve en el cursor con datos numéricos pero necesito sacar totales y porcientos a partir de los datos devueltos y necesitaría que dichos totales y porcientos fueran devueltos en los parámetros de salida, esto se puede hacer? habría alguna otra forma de hacerlo? Muchas gracias. Creo que no termino bien de entender la pregunta: A que te referis con parametros de salida? Los datos van a volver en forma de tabla. Si necesitas mas valores de retorno, van (tal vez) a ser mas parametros OUT en tu funcion... Por que no mostras un ejemplo de lo que estas haciendo? Porque asi como esta, parece que nadie va a poder ayudarte pues la pregunta no esta bien formulada. Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] diferencias con funcion definida setof y no setof
Emanuel Calvo Franco wrote: El día 24 de junio de 2010 16:10, gher...@fmed.uba.ar escribió: Hola chicos. Me asalto una duda. Cuando defino una funcion cualquiera, digamos CREATE FUNCTION pp() returns setof public.pp as $$ select * from public.pp where id=99; $$ En la tabla pp *no* existe ese id 99Bien. test=# SELECT * from pp(); id| descripcion| +-+ (0 filas) Cuando la ejecuto, me devuelve 0 registros. Fantastico Ahora, si defino la misma funcion, pero devolviendo simplemente `returns public.pp', al ejecutar la funcion me trae 1 (un!) registro con null'es test=# SELECT * from pp(); id | descripcion +- | | (1 fila) ?? Algun motivo para esta variacion de comportamiento? PG 8.3.11 En realidad la funcion no retorna valor, la fila que te esta devolviendo es la del select invocante: SELECT NULL; (te devolvera una fila) SELECT pp(); (una fila) SELECT * FORM pp(); una fila En la primera, la funcion al ser fuente de datos, es distinto porque la consulta toma los datos del set (que esta vacio), sin embargo cuando ejecutas una consulta 'sin' fuentes' de datos, te devolvera 1 fila ( now(), current_date, etc.) Aha...aha...aha...ok... No lo entiendo, pero se que no me convence. Es decir, esto rompe con la logica de la capa de arriba de un sistema en el cual participo, en el cual muchas veces usan la longitud del RecordSet o similar (de .NET) para saber si la consulta obtuvo algun resultado. Con este asunto, esa tecnica, que tiene (a mi entender) mucho sentido comun, no sirve, pues el RecordSet nunca tiene longitud 0, lo que seria esperable para una consulta que no encontro ningun registro! Gracias por tu tiempo, Emanuel! Saludos. Gerardo - 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
Re: [pgsql-es-ayuda] castear variable tipo RECORD a TEXT[]
Emanuel Calvo Franco wrote: alvherre=# select tabla, (registro_new::gerardo).* from logtable where tabla = 'gerardo'; Pues estare auditando multiples tablas (la clausula `where' no sera por tabla, sino por usuario/periodo de tiempo). Pero supongo que podre hacer algo con querys dinamicos. Muy util tu ejemplo, muchas gracias por el trabajo que te tomaste! En todo caso, podrías hacer una función de consulta que 'destripe' el record de acuerdo a la estructura de la tabla. De hecho me parece más genérico y limpio que especificar columna por columna. Ciertamente, en eso estoy ahora. No es terriblemente compleja, pero tiene algo de querys dinamicos que queria evitar. Supongo que si pudiese trabajar con arrays, seria mas facil encontrar, por ejemplo, la diferencia simetrica entre 2 arrays (new y old), y asi encontrar lo que ha cambiado de ese registro. Gracias a todos por su tiempo! Gerardo - 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
Re: [pgsql-es-ayuda] castear variable tipo RECORD a TEXT[]
Alvaro Herrera wrote: Excerpts from Gerardo Herzig's message of lun may 31 14:34:47 -0400 2010: Ciertamente, en eso estoy ahora. No es terriblemente compleja, pero tiene algo de querys dinamicos que queria evitar. Supongo que si pudiese trabajar con arrays, seria mas facil encontrar, por ejemplo, la diferencia simetrica entre 2 arrays (new y old), y asi encontrar lo que ha cambiado de ese registro. Creo que para una cosa así sería mucho más sencillo usar PL/Perl, que te permita enumerar los campos de cada registro en forma simple (for my $attr (keys %$NEW), o algo por el estilo). Coincido Alvaro, podria usar plpython, y todo seria bastante simple, pero mi jefe quiere que solamente se use sql o plsql (razones tecnico/administrativas. Cosas que pasan) Gracias de nuevo por tu tiempo! Gerardo - 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
Re: [pgsql-es-ayuda] castear variable tipo RECORD a TEXT[]
alvherre wrote: Excerpts from Gerardo Herzig's message of mié may 26 18:04:22 -0400 2010: Hola a todos. No estoy pudiendo castear correctamente una variable RECORD a un array. Estoy escribiendo un trigger, y me gustaria guardar NEW (y OLD) en forma de vectores. Hay alguna manera de hacerlo en plpgsql (quiero decir, sin recurrir a contribs)? ¿Por qué no guardas el registro completo serializado a texto, en vez de procesar atributo por atributo? alvherre=# create table gerardo (a int, b text, c timestamp); CREATE TABLE alvherre=# create function serializa(gerardo) returns text language plpgsql as $$ begin return $1::text ; end $$; CREATE FUNCTION alvherre=# insert into gerardo values (1, 'gerardo', now()); INSERT 0 1 alvherre=# insert into gerardo values (2, 'herzig', now()); INSERT 0 1 alvherre=# select serializa(gerardo.*) from gerardo; serializa -- (1,gerardo,2010-05-27 21:06:54.526301) (2,herzig,2010-05-27 21:06:59.989333) (2 filas) Me imagino que debe poder hacerse con NEW y OLD también ... alvherre=# create or replace function trig() returns trigger language plpgsql as $$ begin raise notice '%' , NEW::text; return NEW; end ; $$; CREATE FUNCTION alvherre=# create trigger gerardo_trig before insert on gerardo for each row execute procedure trig(); CREATE TRIGGER alvherre=# insert into gerardo values (3, 'fmed', now()); NOTICE: (3,fmed,2010-05-27 21:10:18.286279) INSERT 0 1 Esto lo puedes expandir en columnas con * como harías con un registro de una tabla: alvherre=# select ('(3,fmed,2010-05-27 21:10:18.286279)'::gerardo).*; a | b | c ---+--+ 3 | fmed | 2010-05-27 21:10:18.286279 (1 fila) Esto funciona para un trigger genérico: alvherre=# create table logtable (tabla text, registro_new text); CREATE TABLE alvherre=# create or replace function log_trig () returns trigger language plpgsql as $$ begin insert into logtable (tabla, registro_new) values (tg_relname, new::text); return new; end ; $$; CREATE FUNCTION alvherre=# create table franco (a numeric, b inet, c timestamp with time zone); CREATE TABLE alvherre=# create trigger franco_trig before insert on franco for each row execute procedure log_trig(); CREATE TRIGGER alvherre=# create trigger gerardo_trig before insert on gerardo for each row execute procedure log_trig(); CREATE TRIGGER alvherre=# insert into gerardo values (3, 'fmed', now()); INSERT 0 1 alvherre=# insert into franco values (42, '192.168.0.3', now()); INSERT 0 1 alvherre=# select * from logtable; tabla | registro_new -+-- gerardo | (3,fmed,2010-05-27 21:16:30.573531) franco | (42,192.168.0.3,2010-05-27 21:17:02.494054-04) (2 filas) Y puedes expandirlo de esta forma: alvherre=# select tabla, (registro_new::gerardo).* from logtable where tabla = 'gerardo'; tabla | a | b | c -+---+--+ gerardo | 3 | fmed | 2010-05-27 21:16:30.573531 (1 fila) No creo que se pueda poner un cast dependiendo del valor de la primera columna, pero creo que con eso tienes bastante de lo que querías hacer. A todo esto, ¿alguna razón para no usar tablelog de pgfoundry? Hola. Gracias por tu tiempo. Supongo que tendre algunos problemas extras, debido a que no podre hacer la expansion en forma directa p.e. alvherre=# select tabla, (registro_new::gerardo).* from logtable where tabla = 'gerardo'; Pues estare auditando multiples tablas (la clausula `where' no sera por tabla, sino por usuario/periodo de tiempo). Pero supongo que podre hacer algo con querys dinamicos. Muy util tu ejemplo, muchas gracias por el trabajo que te tomaste! Probare y vere como me trata. Gracias de nuevo! Gerardo - 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
Re: [pgsql-es-ayuda] castear variable tipo RECORD a TEXT[]
Emanuel Calvo Franco wrote: Estoy escribiendo un trigger, y me gustaria guardar NEW (y OLD) en forma de vectores. Hay alguna manera de hacerlo en plpgsql (quiero decir, sin recurrir a contribs)? DECLARE variable text[]; BEGIN ... variable := ('{' || NEW.col1::text || ',' || NEW.col2 '}')::text[]; END; También utilizando array_append (aunque no es más comoda). Tampoco se si estás queriendo guardar el RECORD completo como un elemento del array, en tal caso, castealo a text y 'appendealo' al array. Si, podria funcionar...aunque el trigger es generico (es un trigger de auditoria), y NEW.colx va a variar...pero, supongo que podre 'loopear' sobre la estructura de la tabla en cuestion. Estaba pensando en algo mas directo, pero tu idea deberia funcionar. Gracias! Gerardo - 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
[pgsql-es-ayuda] consulta sobre join de 10 tablas
Hola chicos. Tengo una consulta que, basicamente es un join de unas 10 tablas, y quiero ver si puedo acelerar la ejecucion. Ademas del uso de indices, hay en algun lugar algunas buenas costumbres sobre como hacer un join de muchas tablas? Gracias! Gerardo - 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
[pgsql-es-ayuda] eliminando acentos de un texto codificado en latin1
hola chicos: Estoy intentando (y fracasando miserablemente) de 'aplanar' un texto en latin1, para eliminarle vocales acentuadas, y demas. P.e. si hago un fulltext=# SELECT texto from paginas; ...BRorg\341nica de la C\341tedra... Donde yo quiero que me quede ...BRorganica de la Catedra... Es evidente que ese \341 no puedo cambiarlo usando algo como regexp_replace(new_text, E'\341', 'a', 'g'), pues sigo viendo exactamente lo mismo. La codificacion de la base es 'LATIN1'. Ideas, sugerencias...? Gracias! Gerardo -- TIP 6: ¿Has buscado en los archivos de nuestra lista de correo? http://archives.postgresql.org/pgsql-es-ayuda