tag:blogger.com,1999:blog-10559104.post114139877336814098..comments2023-08-20T06:39:50.965-03:00Comments on Blog de Enrique Place: PostgreSQL: crear tablas temporales a partir de una consulta SQLEnrique Placehttp://www.blogger.com/profile/15452998349449419148noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-10559104.post-12361378461851337902012-10-30T19:10:22.200-03:002012-10-30T19:10:22.200-03:00un excelente trabajo, me ayudo demasiado, estamos ...un excelente trabajo, me ayudo demasiado, estamos implementando búsquedas en un nuevo sistema y ha sido de gran ayuda lo que describes en tu publicación saludos!!!!C4Allhttps://www.blogger.com/profile/10455521830543510622noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-79821683339883814902010-06-24T13:30:08.909-03:002010-06-24T13:30:08.909-03:00Estoy realizando un script en pl pgsql(postgres) y...Estoy realizando un script en pl pgsql(postgres) y me sirvio para poder borrar unos registros duplicados sin qu me dañaran los originales...ya les contaré como me quedo el código sirve mucho creanme. Gracias EnriqueUnknownhttps://www.blogger.com/profile/10920957451101558570noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-81564081894064456422010-06-08T20:10:00.153-03:002010-06-08T20:10:00.153-03:00Hermano una pregunta, eso me sirve para crear cart...Hermano una pregunta, eso me sirve para crear carteles en caso de matrimonios? me explico, los novios van al registro civil, dan sus datos y los de los testigos, y el sistema (en una tabla temporal) emite un reporte temporal, que dice que deben ir en dos meses a contraer el matrimonio, un dia antes del matrimonio ellos regresan a confirmar que no estan arrepentidos y es en ese momento donde paso los datos de la temporal a la original. Puede hacerse asi durante tanto tiempo? o solo es mientras ejecutamos un query?Jose Miguelhttps://www.blogger.com/profile/09296236673953209684noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-61110713905468971582009-02-25T13:10:00.000-02:002009-02-25T13:10:00.000-02:00Hola enrique, que pasa si no modifico la clave pri...Hola enrique, que pasa si no modifico la clave primaria en la tmp para hacer el insert en la tabla original; es decir, no necesito hacer un insert sino un updatelianjudohttps://www.blogger.com/profile/13032465840081224293noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-26425769259052319952007-12-07T15:55:00.000-03:002007-12-07T15:55:00.000-03:00Tengo otro problema, cambie la funcion y esta si m...Tengo otro problema, cambie la funcion y esta si me resulta pero cuando quiero hacerle un select a la tabla o incluso un drop me sale que no existe la tabla, pero si esta creada, es como si la funcion creara una sesion para la creacion de la tabla y la tabla perteneciera a esa sesiosn y por eso en el editor no puedo verla ser?<BR/><BR/>esta es la nueva funcion<BR/><BR/><BR/>CREATE OR REPLACE FUNCTION "reportes"."compmarca" (varchar, varchar, varchar, varchar) RETURNS SETOF boolean AS<BR/>$body$<BR/>declare<BR/>categoria alias for $1;<BR/>campana alias for $2;<BR/>fechaini alias for $3;<BR/>fechafin alias for $4;<BR/>cursor1 refcursor;<BR/>consulta varchar;<BR/>respuesta varchar;<BR/>begin<BR/><BR/><BR/>EXECUTE 'CREATE GLOBAL TEMP TABLE compxmarcatb (<BR/>medio varchar(2),<BR/>categoria varchar(6),<BR/>marca varchar(6),<BR/>inversion numeric<BR/>)';<BR/>INSERT INTO compxmarcatb (select comp.* from (<BR/>select * from reportes.compxmarca(''||categoria||'',''||campana| |'','tv',''||fechaini||'',''||fechafin||'')<BR/>union<BR/>select * from reportes.compxmarca(''||categoria||'',''||campana| |'','rd',''||fechaini||'',''||fechafin||'')<BR/>union<BR/>select * from reportes.compxmarca(''||categoria||'',''||campana| |'','pr',''||fechaini||'',''||fechafin||'')<BR/>union<BR/>select * from reportes.compxmarca(''||categoria||'',''||campana| |'','rv',''||fechaini||'',''||fechafin||'')<BR/>union<BR/>select * from reportes.compxmarca(''||categoria||'',''||campana| |'','su',''||fechaini||'',''||fechafin||'')<BR/>) as comp);<BR/><BR/><BR/>end;<BR/>$body$<BR/>LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;Unknownhttps://www.blogger.com/profile/14615149830858541771noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-17869165618750402242007-12-07T14:21:00.000-03:002007-12-07T14:21:00.000-03:00Hola, yo tengo un problema un tanto raronecesito h...Hola, yo tengo un problema un tanto raro<BR/>necesito hacer una funcion que cree una tabla temporal, pero me sale un error:<BR/>ERROR: cannot open SELECT INTO query as cursor<BR/>CONTEXT: PL/pgSQL function "compmarca" line 23 at open<BR/>La consulta esta bien, porque cuando la hago a parte, si me crea la tabla y la llena, algo tiene que ver con la llamada al cursor. si pueden ayudarme les agradecería muchisimo.<BR/><BR/>CREATE OR REPLACE FUNCTION "reportes"."compmarca" (varchar, varchar, varchar, varchar) RETURNS SETOF boolean AS<BR/>$body$<BR/>declare<BR/>categoria alias for $1;<BR/>campana alias for $2;<BR/>fechaini alias for $3;<BR/>fechafin alias for $4;<BR/>cursor1 refcursor;<BR/>consulta varchar;<BR/><BR/>begin<BR/>consulta:='CREATE TEMP TABLE compxmarca as<BR/>select comp.* from (<BR/>select * from reportes.compxmarca('''||categoria||''','''||campa na||''',''tv'','''||fechaini||''','''||fechafin||' '')<BR/>union<BR/>select * from reportes.compxmarca('''||categoria||''','''||campa na||''',''rd'','''||fechaini||''','''||fechafin||' '')<BR/>union<BR/>select * from reportes.compxmarca('''||categoria||''','''||campa na||''',''pr'','''||fechaini||''','''||fechafin||' '')<BR/>union<BR/>select * from reportes.compxmarca('''||categoria||''','''||campa na||''',''rv'','''||fechaini||''','''||fechafin||' '')<BR/>union<BR/>select * from reportes.compxmarca('''||categoria||''','''||campa na||''',''su'','''||fechaini||''','''||fechafin||' '')<BR/>) as comp;';<BR/><BR/>open cursor1 for execute consulta;<BR/>close cursor1;<BR/>end;<BR/>$body$<BR/>LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;Unknownhttps://www.blogger.com/profile/14615149830858541771noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-10104831405005457722007-08-10T06:23:00.000-03:002007-08-10T06:23:00.000-03:00Sobre el performance de postgresql, actualmente en...Sobre el performance de postgresql, actualmente en la version 8.2.4 es en realidad muy bueno y yo no diria que es el doble o mas lento que mysql, pero para fines practicos lo que importa es la integridad de datos no la velocidad. Otra cosa, postgresql es facil de usar y administrar, no tanto mas que mysql. Conoci la historia de un argentino que tenia un sistema con slony y manejaba varios teras de informacion en tiempo record, eso si que es obtimizacion. Compañeros Postgresql no muerde, en realidad es lo mejor que les podria pasar en la vida a todos aquello seguidores de MySQL, pruebenlo y me dicen que les parecio.darkAvngrhttps://www.blogger.com/profile/03848153104088604222noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-2505727217747381162007-08-10T06:18:00.001-03:002007-08-10T06:18:00.001-03:00Hola, hace algun tiempo migre una base de datos de...Hola, hace algun tiempo migre una base de datos de mysql a postgres, como 2 millones de registros, la forma mas facil la hice generando un script de perl con dbi, extraia, metia. A mi me funciono y francamente fue muy sencillo.<BR/><BR/>Otra cosa, con respecto a las tablas temporales, en realidad las que creaste eran tablas comunes y corrientes, para crear una verdadera tabla temporal necesitas crearla con el operador temporary, por ejemplo: create temporary table clientes_tmp as selet * from clientes;<BR/><BR/>Pero como referencia que mejor que el mismo manual: <A HREF="http://www.postgresql.org/docs/8.1/static/sql-createtable.html" REL="nofollow">http://www.postgresql.org/docs/8.1/static/sql-createtable.html</A><BR/><BR/>Una tabla temporal solo es visible por el usuario que la crea y por el tiempo que dura la conexion, no es necesario borrarla el RDBMS lo hace por nosotros mismos.<BR/><BR/>Saludos a todos.darkAvngrhttps://www.blogger.com/profile/03848153104088604222noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-51695646841637434942007-08-10T06:18:00.000-03:002007-08-10T06:18:00.000-03:00Hola, hace algun tiempo migre una base de datos de...Hola, hace algun tiempo migre una base de datos de mysql a postgres, como 2 millones de registros, la forma mas facil la hice generando un script de perl con dbi, extraia, metia. A mi me funciono y francamente fue muy sencillo.<BR/><BR/>Otra cosa, con respecto a las tablas temporales, en realidad las que creaste eran tablas comunes y corrientes, para crear una verdadera tabla temporal necesitas crearla con el operador temporary, por ejemplo: create temporary table clientes_tmp as selet * from clientes;<BR/><BR/>Pero como referencia que mejor que el mismo manual: <A HREF="http://www.postgresql.org/docs/8.1/static/sql-createtable.html" REL="nofollow">http://www.postgresql.org/docs/8.1/static/sql-createtable.html</A><BR/><BR/>Una tabla temporal solo es visible por el usuario que la crea y por el tiempo que dura la conexion, no es necesario borrarla el RDBMS lo hace por nosotros mismos.<BR/><BR/>Saludos a todos.darkAvngrhttps://www.blogger.com/profile/03848153104088604222noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-60922616382673017072007-03-21T18:05:00.000-03:002007-03-21T18:05:00.000-03:00Buenas tardes Enrique, he leido una que otra respu...Buenas tardes Enrique, he leido una que otra respuesta de este topico y me gustaria saber si ya tienes listo el How To para migrar de MySQL a Postgres. De verdad apreciaria mucho tu ayuda. Necesito migrar una base de datos con una gran cantidad de registros y se me esta complicando la existencia. <BR/><BR/>He probado con:<BR/>$ mysqldump -u root -p --compatible=postgresql --skip-add-drop-table basededatos > archivo.sql<BR/><BR/>Pero cuando restauro con psql aparecen muchos errores.<BR/><BR/>Gracias!CyberCanibalhttps://www.blogger.com/profile/07167052304720763974noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-1141532279366633052006-03-05T01:17:00.000-03:002006-03-05T01:17:00.000-03:00¿Tanta información? ¿Estás guardando datos binario...¿Tanta información? ¿Estás guardando datos binarios dentro de la base de datos?<BR/><BR/>Haceme acordar que tengo que escribir un artículo sobre el proceso de migración de MySQL a PostgreSQL ;-)<BR/><BR/>Tuve que pasar por ese proceso hace más de un año, y en esa época me dió más trabajo del esperado. Por ejemplo, a pesar que estamos hablando de dos bases "software libres" y que por premisa deberían respetar los estándares ... el "dump" (la exportación de las extruturas de las tablas y los datos como sentencias SQL en un archivo de texto) no eran compatibles entre ambas.<BR/><BR/>Buscando en Internet me encontré con varias personas que pasaron por ese mismo problema y terminaron haciendo un scripts que modifica el "dump" de MySQL y lo hace "compatible" con PostgreSQL.<BR/><BR/>Calculo que hoy debe ser más transparente, además existen más herramientas para hacer la migración.<BR/><BR/>La gran ventaja del cambio es obtener todo el poder que te da usar todas las características de la base. Si no es lo que buscas, y no tienes un buen DBA para sacarle provecho, ni lo intentes.<BR/><BR/>Por defecto, Postgres necesita el doble de tiempo en procesar las mismas consultas que en MySQL (no lo tengo confirmado esto con la versión 5).<BR/><BR/>El tema es que la base de datos PostgreSQL es mucho más compleja y tiene muchos más procesos y controles corriendo que MySQL, generando una "latencia" a la hora de usarla.<BR/><BR/>Bueno, cuenta un poco más las características de esa base de datos, que has despertado mi curiosidad ;-)Enrique Placehttps://www.blogger.com/profile/15452998349449419148noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-1141412208701274862006-03-03T15:56:00.000-03:002006-03-03T15:56:00.000-03:00Probablemente si...La verdad no tengo experiencia ...Probablemente si...<BR/>La verdad no tengo experiencia con PostgreSQL.<BR/>Incluso, estoy pensando en migrar todo, ya que manejamos una cantidad enorme de registros.<BR/>Una de las bdd actualmente ocupa 11 Gb :S un abuso...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-10559104.post-1141408045217816562006-03-03T14:47:00.000-03:002006-03-03T14:47:00.000-03:00Gracias por confirmar que es compatible con MySQL ...Gracias por confirmar que es compatible con MySQL ;-) <BR/><BR/>Desde que migramos a PostgreSQL no he hecho muchos trabajos de administración con bases MySQL.<BR/><BR/>¿Será que todas las empresas con grandes bases de datos ya se habrán cambiado a PostgreSQL? ;-)Enrique Placehttps://www.blogger.com/profile/15452998349449419148noreply@blogger.comtag:blogger.com,1999:blog-10559104.post-1141407429332881602006-03-03T14:37:00.000-03:002006-03-03T14:37:00.000-03:00Con PostgreSQL y MySQL.. lo acabo de probar y anda...Con PostgreSQL y MySQL.. lo acabo de probar y anda impecable :)Anonymousnoreply@blogger.com