(/[^0-9'.']/g, "");
si se necesita saber algo mas
Tratando de salir de la Ignopia.
Haz el pg_dump normalmente (en Latin1), y luego
PGOPTIONS="-c client_encoding=latin1" pg_restore el-dump-de-tu-base.dump
Creo que eso debería funcionar.
(Obviamente, al hacer initdb en 8.3 se debió haber escogido una
configuración regional en utf8)
xmlns:t="http://myfaces.apache.org/tomahawk"
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name
[ (column_name [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ]
AS query
=#BEGIN;
=#CREATE TEMP TABLE prueba AS SELECT * FROM CIUDAD;
=#SELECT * FROM prueba;
ciud_id | ciud_codigo | ciud_nombre
----------+---------------+-------------
1 | 123 | Bogota
2 | 456 | Medellin
3 | 5 | ñoño
4 | 789 | Cali
(4 filas)
=#ROLLBACK;
ROLLBACK
=# SELECT * FROM prueba;
ERROR: relation "prueba" does not exist
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
| table_constraint
| LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] }
[, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]
ON COMMIT
The behavior of temporary tables at the end of a transaction block can be controlled using ON COMMIT.
The three options are:
PRESERVE ROWS
No special action is taken at the ends of transactions. This is the default behavior.
DELETE ROWS
All rows in the temporary table will be deleted at the end of each transaction block.
Essentially, an automatic TRUNCATE is done at each commit.
DROP
The temporary table will be dropped at the end of the current transaction block.
=# CREATE TEMP TABLE prueba AS select * from ciudad ON COMMIT DROP;
ERROR: syntax error at or near "on" en el carácter 50
LINEA 1: create temp table prueba as select * from ciudad on commit d...
=# BEGIN;
BEGIN
=# CREATE TEMP TABLE prueba(ciud_id integer, ciud_codigo numeric, ciud_nombre varchar) ON COMMIT DROP;
CREATE TABLE
De esa forma conseguia el comportamiento que queria, que cuando la transaccion se confirme la tabla se destruya sin necesidad de terminar la sesion con la base de datos, una ultima cosa esto lo probe en la version 8.1.4.
=# \d prueba
Tabla «pg_temp_1.prueba»
Columna | Tipo | Modificadores
-----------------+---------------------+-----------------
ciud_id | integer |
ciud_codigo | numeric |
ciud_nombre | character varying |
=# INSERT INTO prueba SELECT * FROM ciudad;
INSERT 0 4
=# SELECT * FROM prueba;
ciud_id | ciud_codigo | ciud_nombre
----------+---------------+-------------
1 | 123 | Bogota
2 | 456 | Medellin
3 | 5 | ñoño
4 | 789 | Cali
(4 filas)
=# COMMIT;
COMMIT
=# SELECT * FROM prueba;
ERROR: relation "prueba" does not exist
Los CTID son usados para identificar registros físicos específicos con valores de bloque y de desplazamiento (offset). Los CTID cambian después de que los registros son modificados y recargados. Son usados por entradas indexadas para apuntar a registros físicos.
--con distincteso era lo que faltaba utilizar era una funcion MIN()/MAX() para obtener el resultado esperado, ya habia conseguido la solucion a la primera parte del problema.
SELECT DISTINCT ON (campo1) * FROM prueba2;
--sin el distinct to
SELECT b.* FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6
CREATE TEMP TABLE temporal AS SELECT b.* FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6o sencillamente asi: (de esta forma funciona en PostgreSQL y SQL Server)
SELECT b.* INTO temporal FROM ( SELECT campo1, min(campo6) as campo6 FROM prueba2 GROUP BY campo1 ) a, prueba2 b WHERE a.campo1=b.campo1 AND a.campo6=b.campo6;luego eliminamos los datos (la funcion truncate tambien es soportada por sql server o almenos eso dicen los manuales)
TRUNCATE prueba2;y por ultimo
INSERT INTO prueba2 SELECT * FROM temporal;En postgreSQL creandose la tabla temporal no hubiera sido necesario eliminar la entidad, dado que esta desaparece cuando se termina la sesion, pero no siendo el caso para la sentencia INSERT [..] INTO [], entonces:
DROP TABLE temporal;Bueno aunque lo anterior no es el santo grial, es un truco para salir de apuros o para alguien que no conociera una forma de hacerlo, espero que a alguien le sirva, almenos a mi me sirvio.