Re: Seleccionar columnas por su posicion en lugar de su nombre
- Mensaje original - > De: "jvenegasperu" > Para: "Postgresql" > Enviados: Jueves, 23 de Agosto 2018 11:32:10 > Asunto: Seleccionar columnas por su posicion en lugar de su nombre > buen dia tengo esta situacion > > como resultado de hacer una consulta cruzada obtengo datos como se ve en la > imagen adjunta > > donde las fechas eran filas y han pasado a ser columnas. > > ahora el tema es que las fechas siempre van a ser variables mes a mes mi > pregunta es si existe forma de seleccionar las columnas por su posicion en > lugar de su nombre algo como cambiar > > select nombre1,nombre2 from tabla; > > por algo quiza como > > select columnid(1), columnid(2) from tabla/vista; > > como podria lograr algo asi seleccionar por la posicion de la columan en > lugar de su nombre es que no se como se llamara la columna por que es el > resultado de la columna cruzada Creo que vas a tener que construirla en pl/pgsql (u otro lenguage, pl/python o lo que domines). Los nombres de los campos podes sacarlos de information_schema.columns: postgres=# \d test Table "public.test" Column | Type | Collation | Nullable | Default +-+---+--+-- id | integer | | not null | nextval('test_id_seq'::regclass) data | text| | | postgres=# select column_name from information_schema.columns where table_name = 'test' and ordinal_position=2; column_name - data (1 row) y una vez que tenes los nombres de la/s columnas segun posicion, te armas un string y le mandas un EXECUTE '.' HTH Gerardo
Re: Acerca de módulo contrib a instalar en Postgres
- Mensaje original - > De: "Yessica Brinkmann" > Para: "Alvaro Herrera" > CC: "Daymel Bonne" , "Juan" > , "pgsql-es-ayuda" > > Enviados: Domingo, 19 de Agosto 2018 22:26:58 > Asunto: Re: Acerca de módulo contrib a instalar en Postgres > Buenas, > Les cuento que estuve esperando a que me instalaran Internet en la máquina > donde trabajo en este proyecto para poder trabajar mejor. > Y anoche empecé de nuevo a trabajar en el proyecto. > Instalé de nuevo incluso Debian. > Empecé todo de nuevo. > Luego instalé el Postgresql 8.3.23. > Pero antes de instalar el Index Adviser, intenté nomás ya levantar el > servidor Postgresql, ya que ese era el último problema que estaba teniendo. > Al intentar levantar el servidor Postgresql me aparece ahora el siguiente > error: > root@debian:/home/yessica/postgresql-8.3.23/src/bin/initdb# ./initdb -D > /usr/local/etc/yessi2 > The program "postgres" is needed by initdb but was not found in the > same directory as "/home/yessica/postgresql-8.3.23/src/bin/initdb/initdb". Te conviene usar la version compilada de initdb. Por default, deberia estar en el directorio /usr/local/pgsql/bin/, pero depende de las opciones de configure que hayas utilizado. HTH Gerardo
Re: Generar registros no existentes en tablas
- Mensaje original - > De: "Wilmer Garcia"> Para: pgsql-es-ay...@postgresql.org > Enviados: Miércoles, 25 de Abril 2018 16:48:54 > Asunto: Generar registros no existentes en tablas > > Saludos desde Venezuela, acudo a ustedes para solicitar su orientación > respecto a un requerimiento que no he podido resolver. > > Se necesita generar un reporte de nomina donde se refleje el ingreso total > mensual de un trabajador en los últimos 6 años. > > Siempre se deben generar 6 columnas (los seis años) y 12 registros que > corresponden a los 12 meses. > > En el caso que un trabajador solo trabajó 5 meses, igual se debe rellenar > las 6 columnas (años) por cada 12 registros (meses) y donde no se obtenga > datos, se rellena con valor cero (0). > > En la base de datos donde se extrae la información no existe una tabla > donde esté definido un calendario. > > El problema que no he logrado resolver, es cómo generar los doce registros > para los casos en que una persona trabajó menos de un año. > > Un intento fue utilizar un generate_series(1,12) como parte del FROM pero > no encuentro como vincularlo a la tabla donde esta la referencia a las > fechas de los registros de cobro del trabajador. > > Creo que se puede resolver con plpgsql pero quiero saber sin con SQL hay > solución antes de indagar a otro nivel. > > Se utiliza PostgreSQL 9.1 sobre Debian 8 > > Espero haber logrado hacerme entender, agradecido de antemano por su > atención. > > -- > *WILMER GARCIA* > Para esta clase de casos, generalmente se recurre a crosstab para generar lo que llaman un "pivot": https://www.postgresql.org/docs/current/static/tablefunc.html HTH Gerardo
Re: recovery_min_apply_delay y WAL
El 11 de abril de 2018, 15:09, Hellmuth Vargas <hiv...@gmail.com> escribió: > Hola Geraldo > > Gracias por la respuesta, pero si para ponerla al día se necesita los WAL > archivados entonces no seria el escenario 1, precisamente lo que quieres > saber es si la replica retrasada va guardando los WAL que genera la master > y esta los va aplicando a medida que van cumpliendo el criterio del delay, > por lo tanto si uno la promueve a master esta se pondría a dia pues tendría > todos los WAL necesarios para eso. > > > El 11 de abril de 2018, 11:20, Gerardo Herzig<gerardo.her...@ayres.io> > escribió: > >> >> >> El 11 de abril de 2018, 12:21, Hellmuth Vargas <hiv...@gmail.com> >> escribió: >> >>> Hola Lista >>> >>> Tengo configurado un Cluster PostgreSQL 9.6 con dos Replicas >>> asincronicas una de ellas con el parámetro recovery_min_apply_delay >>> (recovery.conf) en 300min, lo que significa que esta replica esta >>> retrasada 5 horas con respecto a la master, pero tengo una duda con >>> respecto al comportamiento de los archivos WAL: >>> >>> 1. La replica 'retrasada' solicita y mantiene los WAL que va generando >>> la master y va aplicando estos WAL en la replica? ó >>> >>> 2. La replica va solicitando los WAL de hace 5 horas las master y los va >>> aplicando? >>> >>> Porque la duda, si la master y la otra replica se dañaran y la replica >>> retrasada se comportara como el caso 1, pues podría promoverla a master y >>> esta se debería poner 'al día' con las transacciones que alcanzo a generar >>> la master. Pero si se comporta como el escenario 2, pues tendría solo una >>> copia de hace 5 horas antes del incidente. >>> >>> Muchas Gracias Lista >>> >>> >>> >>> >>> -- >>> Cordialmente, ta >>> >>> Ing. Hellmuth I. Vargas S. >>> >> >> >> El delay se da en el "apply", o sea, la respuesta es "numero 1". Me >> parece, de todos modos, que para "ponerla al dia" lo habitual es hacer >> archiving, lo cual te serviria para cualquiera de las replicas. >> >> HTH >> Gerardo >> -- >> -- >> Gerardo Herzig >> Principal Consultant at Ayres Data Team >> root at Via Postgres Argentina >> > > > > -- > 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 > > Entiendo, por eso intente aclarar que lo del archiving es una repuesta para el caso mas general, de poner al dia cualquier replica. Saludos -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: recovery_min_apply_delay y WAL
El 11 de abril de 2018, 12:21, Hellmuth Vargas <hiv...@gmail.com> escribió: > Hola Lista > > Tengo configurado un Cluster PostgreSQL 9.6 con dos Replicas asincronicas > una de ellas con el parámetro recovery_min_apply_delay (recovery.conf) > en 300min, lo que significa que esta replica esta retrasada 5 horas con > respecto a la master, pero tengo una duda con respecto al comportamiento de > los archivos WAL: > > 1. La replica 'retrasada' solicita y mantiene los WAL que va generando la > master y va aplicando estos WAL en la replica? ó > > 2. La replica va solicitando los WAL de hace 5 horas las master y los va > aplicando? > > Porque la duda, si la master y la otra replica se dañaran y la replica > retrasada se comportara como el caso 1, pues podría promoverla a master y > esta se debería poner 'al día' con las transacciones que alcanzo a generar > la master. Pero si se comporta como el escenario 2, pues tendría solo una > copia de hace 5 horas antes del incidente. > > Muchas Gracias Lista > > > > > -- > Cordialmente, ta > > Ing. Hellmuth I. Vargas S. > El delay se da en el "apply", o sea, la respuesta es "numero 1". Me parece, de todos modos, que para "ponerla al dia" lo habitual es hacer archiving, lo cual te serviria para cualquiera de las replicas. HTH Gerardo -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: Crear Una trigger usando ROW_NUMBER
El 21 de febrero de 2018, 11:25, yeli <yeliar...@gmail.com> escribió: > Buen día, estoy intento crear un código único concatenado tomando datos de > la función ROW_NUMBER debería hacer lo siguiente: > > Tengo una base de datos postgresql que contiene datos geográficos para ser > visualizados en un software GIS. > > Básicamente es una tabla donde se guardan datos sobre centros poblados, > estos centros poblados tienen datos que al concatenarlos se intenta crear > códigos únicos. > > id(serial) > > Ccentpob > > (Primary Key) > > Nombre > > (Character) > > cod_cent > > (Fk_Key) > > sim_cent > > (Fk_Key) > > row_number > > (Integer) > > 1 > > > La Guaira > > 24 > > VAR > > > 2 > > > Maiquetía > > 24 > > VAR > > > 3 > > > Cabudare > > 13 > > LAR > > > 4 > > > Barquisimeto > > 13 > > LAR > > > 5 > > > Maracay > > 05 > > ARA > > > 6 > > > Palo Negro > > 05 > > ARA > > > > > Utilizando una consulta con la función ROW_NUMBER, logro numerar de cada > Centro Poblado en función a la entidad federal que pertenecen: > > SELECT Id,ccentpob,nombre,cod_cent,sim_cent, ROW_NUMBER ( ) OVER > (PARTITION BY cent) > > la cual me permite, llevar una secuencia de los datos en función a sus > diferentes entidades federales centros poblados. Por lo que esta consulta > queda así: > > > id(serial) > > Ccentpob > > (Primary Key) > > Nombre > > (Character) > > cod_cent > > (Fk_Key) > > sim_cent > > (Fk_Key) > > row_number > > (Integer) > > 1 > > > La Guaira > > 24 > > VAR > > 1 > > 2 > > > Maiquetía > > 24 > > VAR > > 2 > > 3 > > > Cabudare > > 13 > > LAR > > 1 > > 4 > > > Barquisimeto > > 13 > > LAR > > 2 > > 5 > > > Los Crepusculos > > 13 > > LAR > > 3 > > 6 > > > Palo Negro > > 05 > > ARA > > 1 > > > > Hasta aquí todo funciona perfecto. Al probar esto como una consulta > intento ponerlo en un función que permita utilizar un trigger, que se va a > activar cada que que al insertar un dato desde el SIG, se enumere el dato > siguiendo la secuencia. Lo que me va a permita concatenar los datos para > crear el ccentpob que es el único dato que me falta. > > La función que utilizo es la siguiente: > > > CREATE TRIGGER row_number BEFORE INSERT > > ON nombres_geograficos.ba_2202_100101_n_vargas_centros_poblados > > FOR EACH ROW EXECUTE PROCEDURE nombres_geograficos.row_number(); > > > CREATE OR REPLACE FUNCTION nombres_geograficos.row_number() RETURNS > TRIGGER AS ' > > DECLARE > > row_number numeric; > > BEGIN > > IF NEW.cent IS NOT NULL THEN > > row_number := (SELECT ROW_NUMBER ( ) OVER (PARTITION BY cent) > > FROM nombres_geograficos.ba_2202_100101_n_vargas_centros_poblados); > > END IF; > > RETURN NEW; > > END' > > language PLPGSQL; > > > Compilo todo y no me da error, pero cuando intento usar el Qgis 2.18 me da > un error… y no me almacena el dato. Dice que el dato no esta almacenado, > estoy consiente que el ROW_NUMBER es un dato temporal, sea parte de la > tabla para así poder ejecutar mi trigger con éxito. > > Alguien tiene alguna sugerencia. > > Se lo agradecería de verdad. > > > > > > Si entendi bien, en el trigger necesitas asignar new.row_number a algo: IF NEW.cent IS NOT NULL THEN row_number := (SELECT ROW_NUMBER ( ) OVER (PARTITION BY cent) FROM nombres_geograficos.ba_2202_100101_n_vargas_centros_poblados); new.row_number = row_number; END IF; O algo asi..usar row_number como variable, nombre de campo, y siendo que es ya una funcion en postgres, resulta bastante confuso y no creo que se la mejor idea usarlo asi. HTH -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: Feliz navidad y una consulta.
El 24 de diciembre de 2017, 17:53, Gonzalo V <gvm2...@gmail.com> escribió: > Ya lo arreglé. habia que arreglar FOR EACH ROW > > CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON > "Facturacion_registro" *for each row* EXECUTE PROCEDURE > actualiza_fact_registro_trigger(); > > saludos y feliz navidad!! > > Saludos, > Gonzalo > > El 24 de diciembre de 2017, 17:15, Gerardo Herzig <gerardo.her...@ayres.io > > escribió: > >> >> >> El 24 de diciembre de 2017, 17:06, Gonzalo V <gvm2...@gmail.com> >> escribió: >> >>> Hola gerardo, gracias por responder. Imprime el siguiente error >>> ERROR: record "new" is not assigned yet >>> DETAIL: The tuple structure of a not-yet-assigned record is >>> indeterminate. >>> CONTEXT: SQL statement "Update "Facturacion_registro" f set >>> "Cod_sucursal"=(select s."ID" from sucursales s where >>> >>> s."DIRECCION"=NEW."Dirección") >>> from sucursales s >>> where >>> s."DIRECCION"=NEW."Dirección" and f."Cod_sucursal" is null" >>> PL/pgSQL function actualiza_fact_registro_trigger() line 3 at SQL >>> statement >>> SQL state: 55000 >>> >>> Saludos, >>> Gonzalo >>> >>> El 24 de diciembre de 2017, 16:44, Gerardo Herzig < >>> gerardo.her...@ayres.io> escribió: >>> >>>> >>>> >>>> 2017-12-24 15:10 GMT-03:00 Gonzalo V <gvm2...@gmail.com>: >>>> >>>>> Feliz navidad a todos! >>>>> Tengo una duda, si me pueden ayudar en esta navidad... >>>>> Necesito crear una funcion trigger que updatee unos datos a partir de >>>>> otras tablas pero no me funciona, alguien sale como se hace?. Lo que llevo >>>>> hecho, no me funciona. >>>>> De antemano, muchas gracias y feliz navidad y año nuevo. >>>>> >>>>> >>>>> CREATE OR REPLACE FUNCTION actualiza_fact_registro_trigger() RETURNS >>>>> TRIGGER AS $$ >>>>> BEGIN >>>>> Update "Facturacion_registro" f set "Cod_sucursal"=(select s."ID" from >>>>> sucursales s where >>>>> >>>>> s."DIRECCION"=f."Dirección") >>>>> from sucursales s >>>>> where >>>>> s."RUT"=f."Rut" and s."DIRECCION"=f."Dirección" and f."Cod_sucursal" is >>>>> null; >>>>> RETURN new; >>>>> END >>>>> $$ >>>>> LANGUAGE 'plpgsql'; >>>>> >>>>> CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON >>>>> "Facturacion_registro" EXECUTE PROCEDURE actualiza_fact_registro_trigge >>>>> r(); >>>>> >>>>> >>>>> >>>>> >>>>> Saludos, >>>>> Gonzalo >>>>> >>>> >>>> >>>> No queda claro que es lo que "no funciona". Si no me equivoco, la >>>> funcion del trigger no usa para nada los valores del registro que se esta >>>> insertando, por lo que, para empezar, proba directamente ese SQL de la >>>> funcion, tiralo via 'psql' como un query comun y corriente. Tal vez sucede >>>> que los WHERE de tu query no satisfacen ningun registro, pero de nuevo, no >>>> se entiende cual es el problema. >>>> >>>> HTH >>>> -- >>>> -- >>>> Gerardo Herzig >>>> Principal Consultant at Ayres Data Team >>>> root at Via Postgres Argentina >>>> >>> >>> >> Ah pero ahi SI estas usando NEW. No es el mismo codigo del OP. >> Si vos queres actualizar el registro que se esta insertando, podes >> asignar directamente a NEW: Algo como... >> >> new."Cod_sucursal" = select s."ID" from sucursales s where >> s."DIRECCION"=NEW."Dirección" >> >> HTH >> -- >> -- >> Gerardo Herzig >> Principal Consultant at Ayres Data Team >> root at Via Postgres Argentina >> > Gonzalo, para la proxima: 1) Intenta no hacer top-posting, ya que hace mucho mas complicado de seguir el thread 2) Si posteas alguna clase de problema o error, evita el "no me anda", postea cual es *exactamente* el error que te da, asi vamos mas directo a la fuente del problema. Saludos -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: Feliz navidad y una consulta.
El 24 de diciembre de 2017, 17:06, Gonzalo V <gvm2...@gmail.com> escribió: > Hola gerardo, gracias por responder. Imprime el siguiente error > ERROR: record "new" is not assigned yet > DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. > CONTEXT: SQL statement "Update "Facturacion_registro" f set > "Cod_sucursal"=(select s."ID" from sucursales s where > > s."DIRECCION"=NEW."Dirección") > from sucursales s > where > s."DIRECCION"=NEW."Dirección" and f."Cod_sucursal" is null" > PL/pgSQL function actualiza_fact_registro_trigger() line 3 at SQL > statement > SQL state: 55000 > > Saludos, > Gonzalo > > El 24 de diciembre de 2017, 16:44, Gerardo Herzig <gerardo.her...@ayres.io > > escribió: > >> >> >> 2017-12-24 15:10 GMT-03:00 Gonzalo V <gvm2...@gmail.com>: >> >>> Feliz navidad a todos! >>> Tengo una duda, si me pueden ayudar en esta navidad... >>> Necesito crear una funcion trigger que updatee unos datos a partir de >>> otras tablas pero no me funciona, alguien sale como se hace?. Lo que llevo >>> hecho, no me funciona. >>> De antemano, muchas gracias y feliz navidad y año nuevo. >>> >>> >>> CREATE OR REPLACE FUNCTION actualiza_fact_registro_trigger() RETURNS >>> TRIGGER AS $$ >>> BEGIN >>> Update "Facturacion_registro" f set "Cod_sucursal"=(select s."ID" from >>> sucursales s where >>> >>> s."DIRECCION"=f."Dirección") >>> from sucursales s >>> where >>> s."RUT"=f."Rut" and s."DIRECCION"=f."Dirección" and f."Cod_sucursal" is >>> null; >>> RETURN new; >>> END >>> $$ >>> LANGUAGE 'plpgsql'; >>> >>> CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON >>> "Facturacion_registro" EXECUTE PROCEDURE actualiza_fact_registro_trigge >>> r(); >>> >>> >>> >>> >>> Saludos, >>> Gonzalo >>> >> >> >> No queda claro que es lo que "no funciona". Si no me equivoco, la funcion >> del trigger no usa para nada los valores del registro que se esta >> insertando, por lo que, para empezar, proba directamente ese SQL de la >> funcion, tiralo via 'psql' como un query comun y corriente. Tal vez sucede >> que los WHERE de tu query no satisfacen ningun registro, pero de nuevo, no >> se entiende cual es el problema. >> >> HTH >> -- >> -- >> Gerardo Herzig >> Principal Consultant at Ayres Data Team >> root at Via Postgres Argentina >> > > Ah pero ahi SI estas usando NEW. No es el mismo codigo del OP. Si vos queres actualizar el registro que se esta insertando, podes asignar directamente a NEW: Algo como... new."Cod_sucursal" = select s."ID" from sucursales s where s."DIRECCION"=NEW."Dirección" HTH -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: Feliz navidad y una consulta.
2017-12-24 15:10 GMT-03:00 Gonzalo V <gvm2...@gmail.com>: > Feliz navidad a todos! > Tengo una duda, si me pueden ayudar en esta navidad... > Necesito crear una funcion trigger que updatee unos datos a partir de > otras tablas pero no me funciona, alguien sale como se hace?. Lo que llevo > hecho, no me funciona. > De antemano, muchas gracias y feliz navidad y año nuevo. > > > CREATE OR REPLACE FUNCTION actualiza_fact_registro_trigger() RETURNS > TRIGGER AS $$ > BEGIN > Update "Facturacion_registro" f set "Cod_sucursal"=(select s."ID" from > sucursales s where > > s."DIRECCION"=f."Dirección") > from sucursales s > where s."RUT"=f."Rut" > and s."DIRECCION"=f."Dirección" and f."Cod_sucursal" is null; > RETURN new; > END > $$ > LANGUAGE 'plpgsql'; > > CREATE TRIGGER vencimientos_trigger AFTER INSERT OR UPDATE ON > "Facturacion_registro" EXECUTE PROCEDURE actualiza_fact_registro_ > trigger(); > > > > > Saludos, > Gonzalo > No queda claro que es lo que "no funciona". Si no me equivoco, la funcion del trigger no usa para nada los valores del registro que se esta insertando, por lo que, para empezar, proba directamente ese SQL de la funcion, tiralo via 'psql' como un query comun y corriente. Tal vez sucede que los WHERE de tu query no satisfacen ningun registro, pero de nuevo, no se entiende cual es el problema. HTH -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: Hola
; VALUES (default, NEW.username,NEW.nombre, NEW.pass, NEW.ci, > NEW.ultimav, NEW.rol_id, NEW.edad, NEW.sexo_id,NEW.correo, NEW.is_active, > NEW.imagen)» > función PL/pgSQL security.rol_insert() en la línea 43 en sentencia SQL > > > espero puedan ayudarme... > muchas gracias de antemano.... > > -- > ”La vida no es solo esperar a que pase la tormenta, sino aprender a bailar > en la lluvia.” > > Evento Universidad 2018. Conozca todos los detalles en > http://universidad2018.uij.edu.cu > > Lo que se me ocurre mas probable es que tengas alguna llamada recurrente / circular, probablemente en un trigger o regla en la tabla "users". HTH -- -- Gerardo Herzig Principal Consultant at Ayres Data Team root at Via Postgres Argentina
Re: CONSULTA
El 18 de octubre de 2017, 18:41, Maria Antonieta Ramirez < marami...@ulsaneza.edu.mx> escribió: > > hola a todos ! > > > Ojala me puedan orientar, la idea es la siguiente: > > > Cuando yo modifique una tabla , esta modificación se haga tambien en otra > base de datos la cual esta en el mismo segmento de red pero en diferente > servidor, no son bases iguales solo compartirian esa unica tabla .. > > alguna idea de como hacerlo? > > > Sin mas por el momento quedo al pendiente de sus comentarios. > > Si ambas tablas tienen la misma estructura, suena a un caso de replicacion selectiva. Dependiendo de la version de postgres: En postgres 10 replicacion logica es nativa: https://www.postgresql.org/docs/10/static/logical-replication.html para 9.6, 9.5, 9.4, tenes un modulo externo: https://github.com/2ndQuadrant/pglogical Para versiones anteriores, podes usar slony, o hacerlo mas artesanal via dblink o similar. Saludos, Gerardo
Re: duda con JSONB
- Mensaje original - > De: "Carlos T. Groero Carmona"> Para: "Lista PostgreSql" > Enviados: Lunes, 9 de Octubre 2017 10:43:18 > Asunto: duda con JSONB > > Hola LIsta, > > Revisando algunas funciones de JSONB, me encuentro con este problemita y > despues de revisar e intentar varias cosas no he dado con la solución... > > Tengo una tabla: > CREATE TABLE json_test.tablajsonb > ( > atributo jsonb > ) ; > > Estoy probando la función: jsonb_each > > Viendo el ejemplo de postgresql.org > select * from jsonb_each('{"a":"foo", "b":"bar"}') > Obtienes: > > key | value > -+--- > a | foo > b | bar > > Mi query: > SELECT jsonb_each(consulta.atributo) as result > FROM (select t.atributo from json_test.tablajsonb t limit 2 ) consulta; > Me devuelve lo siguiente: > "(edad,11)" > "(porciento,4.49)" > "(nombre_apellidos,"""Nombre55 Apellido17""")" > "(edad,35)" > "(porciento,5.55)" > "(nombre_apellidos,"""Nombre72 Apellido75""")" > > donde edad, porciento y nombre_apellidos son los key de mi JSONB. > Es que jsonb_each devuelve un tipo compuesto, tendrias que poner algo asi: SELECT (jsonb_each(consulta.atributo)).* as result FROM (select t.atributo from json_test.tablajsonb t limit 2 ) consulta; HTH Gerardo
Re: dudas en replicacion
- Mensaje original - > De: "Juan"> Para: "Ayuda" > Enviados: Viernes, 6 de Octubre 2017 18:13:29 > Asunto: dudas en replicacion > > Gente > > > Tengo que poner un remoto a replicar el master ambos postgres 64 bits > pero difieren la version > > resultado de select version(); > > master: > > PostgreSQL 9.1.9 on x86_64-unknown-linux-gnu, compiled by gcc (Debian > 4.7.2-5) 4.7.2, 64-bit > > > slave: > > PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) > 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit > > > esto genera algun problema??. alguna experiancia? > > saludos > > Juan > e > Para usar replicacion por streamin, deben ser las mismas versiones de PG. Gerardo
Re: Registros desaparecidos de la BD
- Mensaje original - > De: "Fernando A"> Para: "Alvaro Herrera" > CC: "Lista PostgreSQL" > Enviados: Martes, 3 de Octubre 2017 10:29:58 > Asunto: Re: Registros desaparecidos de la BD > > Hola, aqui te adjunto una captura de la consulta que muestra los > "registros" de la tabla en cuestión. > El campo "id" es un campo serial, podes observar en las dos filas > "pintadas" que salta el valor de id, que corresponde a los registros que se > perdieron. > > Si, empiezo a pensar que es algo como lo que tu comentas...pero > todavia estoy buscando el error! > Gracias! > Saludos > > > El 3 de octubre de 2017, 09:45, Alvaro Herrera > escribió: > > > Fernando A escribió: > > > Estimados, > > > en tres ocasiones, me encuentro con que han desaparecido algunos > > registros > > > de distintas tablas de una BD,. > > > > Por favor explica a qué te refieres con que "han desaparecido algunos > > registros". ¿cómo identificas que desaparecieron? > > > > Lo que suena posible es que una transacción quedó sin cerrar, y luego se > > cerró la conexión, dejando el mensaje del log que mostraste; todos los > > cambios que se hicieron en esa transacción se pierden. > > > > -- > > Álvaro Herrerahttps://www.2ndQuadrant.com/ > > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > > > Los campos seriales (implementados con una sequence) son propensos a tener "baches". Cuando se hace un nextval(), la secuencia *siempre* se incrementa, independientemente de si la transacccion termina en COMMIT o ROLLBACK Entonces, ya no estariamos hablando de registros perdidos, solo de transacciones fallidas. El log te sabra indicar cuales fallan y porque. Saludos, Gerardo
Re: Argumentos en pg_dump
- Mensaje original - > De: "José Fermín Francisco Ferreras"> Para: "Lista PostgreSQL" > Enviados: Sábado, 29 de Julio 2017 11:12:35 > Asunto: Argumentos en pg_dump > > Buenos días! > > > Hace un tiempo tengo un pg_dump dentro de un archivo por lotes y todo bien me > realiza el backup diario de mi base de datos en postgresql. > > > Pero resulta que trato de ejecutarla hoy y me dice que pg_dump tiene > demasiados argumentos, y yo no habia ningun cambio. > > > Datos: > > > "Pg_dump tiene demasiados argumentos en la línea de ordenes, empezando por > BaseDatos." > > Sistema operativo: MS Windows Server 2012 R2 > > Postgresql 9.5 > > > Linea del backup: > > > @echo off > > for /f "tokens=1-4 delims=/ " %%i in ("%date%") do ( > set dow=%%i > set month=%%j > set day=%%k > set year=%%l >) > > set datestr=%month%-%day%-%year%_%time::=% > set ARCHIVO_BACKUP=BaseDatos_%datestr%.sql > > "C:\Program Files\PostgreSQL\9.5\bin\pg_dump.exe" --host localhost --port > 5432 -U user -F c -v -f -b %ARCHIVO_BACKUP% "BaseDatos" > > pause > > > > A que se debe este problema repentino?? No seria '-f %ARCHIVO_BACKUP% -b' ?
Re: Consulta
- Mensaje original - > De: "Carolina Izaziga M."> Para: pgsql-es-ay...@postgresql.org > Enviados: Martes, 25 de Julio 2017 17:35:45 > Asunto: Consulta > > Hola,soy nueva en postgres, tengo una consulta: > > Quisiera hacer búsquedas en 2 tablas con la misma estructura > > > TABLA1 > > item, nom, apell diagnostico >1 FERNANDO CHAVEZHEB >2 FERNANDO FERNANDEZ NEU >3 CARLA MERCADO CAN > > TABLA2 > > item, nom, apell,diagnostico >5 JUANRIVERA BRON >6 CARLA MERCADO BRON >7 FIO SANTOS HEB > > Si hago una búsqueda en la tabla 1 de una personas hago lo siguiente > > SELECT * FROM TABLA1 > > Where nom='FERNANDO' and apell='CHAVEZ'; > > > La query me devuelve > > item, nom, apell diagnostico >1 FERNANDO CHAVEZHEB > > > Pero si quiero hacer la misma búsqueda en ambas tablas a la vez, quiero > buscar nom=CARLA y apell=MERCADO y que me devuelva el resultado de la > búsqueda de la tabla 1 y 2. > > > Muchas gracias > > -- > M. Carolina Izaziga Mercado > *Gestión de Riesgos LA/FT * > Podrias armarte una vista con la UNION de esas tablas: (untested) CREATE VIEW diagnosticos AS SELECT * from tabla1 UNION ALL SELECT * from tabla2; Y luego el select lo haces unicamente sobre la vista: SELECT * from diagnosticos where nom='FERNANDO' and apell='CHAVEZ'; HTH Gerardo