Re: [MASSMAIL][pgsql-es-ayuda] Pasar un script sql-92 a postgres

2016-06-23 Por tema Alvaro Herrera
Andres D. Hernandez M. escribió:
> Gracias por responder
> 
> 
> 
> El gestor es Dbisam de Elevate Software
> 
> Y si conozco los diferentes tipos de datos y al hacer esta misma tabla por el 
> pgadmin veo claramente que la estructura es diferente pero tengo unas tablas 
> con mucho mas columnas y lo que quiero es migrar a postgres tota la base de 
> datos pero de forma automática o donde se trabaje menos ya que para eso son 
> las herramientas, la cual desconozco cual me hace ese trabajo

¿no puedes decirle al dbisam que genere sin las "extensiones dbisam"?
Está claro que son precisamente las extensiones lo que hace que falle.
Postgres soporta SQL-92 casi al completo, pero esa cláusula COMPRESS no
es parte del estándar.

-- 
Álvaro Herrerahttp://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


RE: [MASSMAIL][pgsql-es-ayuda] Pasar un script sql-92 a postgres

2016-06-23 Por tema Andres D. Hernandez M.
Gracias por responder



El gestor es Dbisam de Elevate Software

Y si conozco los diferentes tipos de datos y al hacer esta misma tabla por el 
pgadmin veo claramente que la estructura es diferente pero tengo unas tablas 
con mucho mas columnas y lo que quiero es migrar a postgres tota la base de 
datos pero de forma automática o donde se trabaje menos ya que para eso son las 
herramientas, la cual desconozco cual me hace ese trabajo



Enviado desde Correo para 
Windows 10



De: Gilberto Castillo
Enviado: jueves, 23 de junio de 2016 11:09 p. m.
Para: Andres D. Hernandez M.
CC: pgsql-es-ayuda@postgresql.org
Asunto: Re: [MASSMAIL][pgsql-es-ayuda] Pasar un script sql-92 a postgres



>
> Buenas tardes a todos los de la lista.
>
> Tengo un script  en sql-92 que me genera un gestor de bases de datos y
> necesito insertarlo en postgres, pero al usar la aplicación sql del
> pgadmin me da errores y según veo es por el tipo de datos que se usan.

1-Primero que gestor te genero eso?

2-¿conoces los tipos de datos de postres?

>
> El escript es el siguiente
>
> /* Script de Creación de Tabla SQL-92 with Extenciones DBISAM */
>
> CREATE TABLE IF NOT EXISTS "VSC_VF_Usuarios"
> (
>"Id" AUTOINC NOT NULL,
>"Nombre" VARCHAR(50),
>"Descripcion" VARCHAR(50),
>"Clave" VARCHAR(50),
>"Creado" DATE,
> PRIMARY KEY ("RecordID") COMPRESS NONE
> DESCRIPTION 'VSCUsuarios'
> LOCALE CODE 0
> USER MAJOR VERSION 1
> );
>
> CREATE UNIQUE INDEX IF NOT EXISTS "UsuarioRepetido" ON "VSC_VF_Usuarios"
> ("Nombre");
>
>
> Gracias de antemano por la ayuda que me puedan brindar
>
> Enviado desde Correo para
> Windows 10
>
>


--
Saludos,
Gilberto Castillo
ETECSA, La Habana, Cuba



Re: [MASSMAIL][pgsql-es-ayuda] Pasar un script sql-92 a postgres

2016-06-23 Por tema Cesar Erices
Gilberto,

A lo anterior expuesto, no olvides lo más importante

¿Que error te da?

Saludos

El 23 de junio de 2016, 18:08, Gilberto Castillo <
gilberto.casti...@etecsa.cu> escribió:

>
> >
> > Buenas tardes a todos los de la lista.
> >
> > Tengo un script  en sql-92 que me genera un gestor de bases de datos y
> > necesito insertarlo en postgres, pero al usar la aplicación sql del
> > pgadmin me da errores y según veo es por el tipo de datos que se usan.
>
> 1-Primero que gestor te genero eso?
>
> 2-¿conoces los tipos de datos de postres?
>
> >
> > El escript es el siguiente
> >
> > /* Script de Creación de Tabla SQL-92 with Extenciones DBISAM */
> >
> > CREATE TABLE IF NOT EXISTS "VSC_VF_Usuarios"
> > (
> >"Id" AUTOINC NOT NULL,
> >"Nombre" VARCHAR(50),
> >"Descripcion" VARCHAR(50),
> >"Clave" VARCHAR(50),
> >"Creado" DATE,
> > PRIMARY KEY ("RecordID") COMPRESS NONE
> > DESCRIPTION 'VSCUsuarios'
> > LOCALE CODE 0
> > USER MAJOR VERSION 1
> > );
> >
> > CREATE UNIQUE INDEX IF NOT EXISTS "UsuarioRepetido" ON "VSC_VF_Usuarios"
> > ("Nombre");
> >
> >
> > Gracias de antemano por la ayuda que me puedan brindar
> >
> > Enviado desde Correo
> para
> > Windows 10
> >
> >
>
>
> --
> Saludos,
> Gilberto Castillo
> ETECSA, La Habana, Cuba
>
>
> -
> 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

César Erices Vergara

Cuenta Twitter: @caerices


Re: [MASSMAIL][pgsql-es-ayuda] Pasar un script sql-92 a postgres

2016-06-23 Por tema Gilberto Castillo

>
> Buenas tardes a todos los de la lista.
>
> Tengo un script  en sql-92 que me genera un gestor de bases de datos y
> necesito insertarlo en postgres, pero al usar la aplicación sql del
> pgadmin me da errores y según veo es por el tipo de datos que se usan.

1-Primero que gestor te genero eso?

2-¿conoces los tipos de datos de postres?

>
> El escript es el siguiente
>
> /* Script de Creación de Tabla SQL-92 with Extenciones DBISAM */
>
> CREATE TABLE IF NOT EXISTS "VSC_VF_Usuarios"
> (
>"Id" AUTOINC NOT NULL,
>"Nombre" VARCHAR(50),
>"Descripcion" VARCHAR(50),
>"Clave" VARCHAR(50),
>"Creado" DATE,
> PRIMARY KEY ("RecordID") COMPRESS NONE
> DESCRIPTION 'VSCUsuarios'
> LOCALE CODE 0
> USER MAJOR VERSION 1
> );
>
> CREATE UNIQUE INDEX IF NOT EXISTS "UsuarioRepetido" ON "VSC_VF_Usuarios"
> ("Nombre");
>
>
> Gracias de antemano por la ayuda que me puedan brindar
>
> Enviado desde Correo para
> Windows 10
>
>


-- 
Saludos,
Gilberto Castillo
ETECSA, La Habana, Cuba


-
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] Pasar un script sql-92 a postgres

2016-06-23 Por tema Andres D. Hernandez M.

Buenas tardes a todos los de la lista.

Tengo un script  en sql-92 que me genera un gestor de bases de datos y necesito 
insertarlo en postgres, pero al usar la aplicación sql del pgadmin me da 
errores y según veo es por el tipo de datos que se usan.

El escript es el siguiente

/* Script de Creación de Tabla SQL-92 with Extenciones DBISAM */

CREATE TABLE IF NOT EXISTS "VSC_VF_Usuarios"
(
   "Id" AUTOINC NOT NULL,
   "Nombre" VARCHAR(50),
   "Descripcion" VARCHAR(50),
   "Clave" VARCHAR(50),
   "Creado" DATE,
PRIMARY KEY ("RecordID") COMPRESS NONE
DESCRIPTION 'VSCUsuarios'
LOCALE CODE 0
USER MAJOR VERSION 1
);

CREATE UNIQUE INDEX IF NOT EXISTS "UsuarioRepetido" ON "VSC_VF_Usuarios" 
("Nombre");


Gracias de antemano por la ayuda que me puedan brindar

Enviado desde Correo para 
Windows 10



Re: [pgsql-es-ayuda] Pregunta sobre indices

2016-06-23 Por tema Herman Estaban
Alvaro gracias por tu tiempo, estare escribiendo de nuevo cuando ya este
terminando las consultas y reportes.

Saludos.


El jue., 23 jun. 2016 a las 15:26, Alvaro Herrera ()
escribió:

> Herman Estaban escribió:
> > Alvaro gracias por la respuesta.
> >
> > Pense que al hacer en un SELECT varios JOINS a una tabla, podria usar
> > indices en los campos FK de las tablas relacionadas. Ya que usare los
> > campos FK para los diversos filtros que se requiere, para los reportes y
> > consultas.
> >
> > Existe alguna sugerencia de que campos deben ser indices?
>
> Depende de las consultas.  Lo mejor es tener índices en las columnas que
> son más usadas y tienen mejor selectividad; el resto de las cláusulas
> del WHERE se implementan mirando el dato de cada tupla, sin necesidad de
> tener un índice específicamente.  Lo mejor es tener un catálogo de todas
> las consultas que se van a usar, para saber realmente qué campos se
> usarán para búsquedas y cuáles tienen poca importancia.  (Asimismo, hay
> consultas que se ejecutan 10 veces al dia y otros sólo 5 veces;
> obviamente es importante darle prioridad a optimizar la consulta que es
> más frecuente).
>
> --
> Álvaro Herrerahttp://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>


Re: [pgsql-es-ayuda] Pregunta sobre indices

2016-06-23 Por tema Alvaro Herrera
Herman Estaban escribió:
> Alvaro gracias por la respuesta.
> 
> Pense que al hacer en un SELECT varios JOINS a una tabla, podria usar
> indices en los campos FK de las tablas relacionadas. Ya que usare los
> campos FK para los diversos filtros que se requiere, para los reportes y
> consultas.
> 
> Existe alguna sugerencia de que campos deben ser indices?

Depende de las consultas.  Lo mejor es tener índices en las columnas que
son más usadas y tienen mejor selectividad; el resto de las cláusulas
del WHERE se implementan mirando el dato de cada tupla, sin necesidad de
tener un índice específicamente.  Lo mejor es tener un catálogo de todas
las consultas que se van a usar, para saber realmente qué campos se
usarán para búsquedas y cuáles tienen poca importancia.  (Asimismo, hay
consultas que se ejecutan 10 veces al dia y otros sólo 5 veces;
obviamente es importante darle prioridad a optimizar la consulta que es
más frecuente).

-- 
Álvaro Herrerahttp://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Pregunta sobre indices

2016-06-23 Por tema Herman Estaban
Alvaro gracias por la respuesta.

Pense que al hacer en un SELECT varios JOINS a una tabla, podria usar
indices en los campos FK de las tablas relacionadas. Ya que usare los
campos FK para los diversos filtros que se requiere, para los reportes y
consultas.

Existe alguna sugerencia de que campos deben ser indices?

Saludos.


Re: [pgsql-es-ayuda] Pregunta sobre indices

2016-06-23 Por tema Alvaro Herrera
Herman Estaban escribió:

> He normalizado esta tabla SFT_MAEPROD en PostgreSQL, y he pensado crear
> indices, mi idea es que quede asi:

No es obligatorio ni conveniente que TODOS los campos FK tengan índices.
Un exceso de índices causa problemas, no sólo porque las inserciones
deben trabajar más para mantener actualizados todos esos índices, sino
también porque impiden que cualquier UPDATE que hagas en esas tablas no
podrán ser HOT.  Si no vas a borrar frecuentemente registros en la tabla
"material", no es necesario que pongas un índice en la columna
sft.maeprod.id_sft_mate, por ejemplo.

(De paso, cortar los campos en X caracteres aún cuando el resultado no
tiene sentido, se pone fastidioso rápidamente.  Puedes usar hasta 63
caracteres en los nombres.  Los estándares de código y nombres son
buenos, siempre y cuando no sean malos).

-- 
Álvaro Herrerahttp://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Pregunta sobre indices

2016-06-23 Por tema Herman Estaban
Hola, aprovechando el hilo.Les comento mi caso, existe una tabla en una
base de datos SQL Server de nombre SFT_MAEPROD en la que se almacena la
informacion de los productos que vende la empresa (ropa).

Esta tabla tenie mas de 100 campos y no esta normalizada, en verdad todas
las tablas de esta base de datos en SQL Server no estan normalizadas.

Se esta creando una nueva base de datos en PostgreSQL para dejar de usar ya
el SQL Server.

Una vez que se termine de hacer la migración de información de SQL Server a
PostgreSQL, tendre que armar consultas y reportes (JOINS) con distintos
tipos de filtros, necesitare indices para tener un tiempo de respuesta
favorable

He normalizado esta tabla SFT_MAEPROD en PostgreSQL, y he pensado crear
indices, mi idea es que quede asi:

CREATE TABLE public.sft_maesede (
  id_sft_sede   serial NOT NULL PRIMARY KEY, -->id sede
  nom_sft_sede  varchar(50), --nombre sede

CREATE TABLE public.sft_maealma (
  id_sft_almaserial NOT NULL PRIMARY KEY, --> id almacen
  id_sft_sedeinteger NOT NULL,  --id sede > (CREAR INDICE)
  nom_sft_alma   varchar(50), --nombre almacen

CREATE TABLE public.sft_maeprod (
  id_sft_prod  bigserial NOT NULL PRIMARY KEY, -->id producto
  id_sft_fami  integer NOT NULL,  --id familia  > (CREAR
INDICE)
  id_sft_clas  integer NOT NULL,  --id clase> (CREAR
INDICE)
  id_sft_mode  integer NOT NULL,  --id modelo   > (CREAR INDICE)
  id_sft_line  integer NOT NULL,  --id linea > (CREAR
INDICE)
  id_sft_mate  integer NOT NULL,  --id material  > (CREAR INDICE)
  id_sft_colo  integer NOT NULL,  --id color> (CREAR
INDICE)
  id_sft_tall  integer NOT NULL,  --id talla   > (CREAR
INDICE)
  id_sft_temp  integer NOT NULL,  --id temporada  > (CREAR INDICE)
  id_sft_gene  integer NOT NULL,  --id genero   > (CREAR INDICE)
  id_sft_pres  integer NOT NULL,  --id presentacion  > (CREAR
INDICE)
  nom_stf_prod varchar(100),  --nombre producto > (CREAR
INDICE)

CREATE TABLE public.sft_prodxalm (
  id_sft_codi  bigserial NOT NULL PRIMARY KEY, --> id
  id_sft_sede  integer NOT NULL,  --id sede  > (CREAR
INDICE)
  id_sft_alma  integer NOT NULL,  --id almacen> (CREAR INDICE)
  id_sft_prod  bigint NOT NULL,   --id producto > (CREAR
INDICE)

Estoy en lo correcto?,

Espero sus comentarios.

Saludos.


Re: [pgsql-es-ayuda] problemas pg_dump

2016-06-23 Por tema Eduardo Morras
On Wed, 22 Jun 2016 11:03:34 -0400
Silvana Flores  wrote:

> Hola a todos he revisado el foro de consultas y aun no enrontrado aún 
> con  algo parecido a mi pregunta.
> 
> Tengo un cron el el server de la base de datos que realiza el
> respaldo todos los dias a una hora fija.
> se realiza un vacuum full analyze y posterior Pg_dump
> 
> esto ha funcionado desde hace bastante tiempo sin problemas, pero las 
> ultimas semanas, en reiteradas ocasiones hemos encontrado el proceso 
> 'pegado'.
> Entiendo que los logs, son importante en estos casos, es por ello me 
> orienten la forma de detectar o configurar para que los log me puedan 
> entregar la información  puede estar ocurriendo.
> Y cual es la mejor manera de volver  a que la bd funcione
> correctamente , pues estoy en duda en solo reiniciar el servicio,
> terminar el proceso que esta causando conflicto o ningunas delas
> anteriores.

No hagas un vacuum full todos los dias con cron, en vez de ello, 

a) modifica (con cron o similar) los valores de autovacuum para que sean mas 
agresivos durante las horas de poco trabajo (por la noche),
b) haz el pg_dump en paralelo
c) finalmente restaura los valores originales de autovacuum.

De esta manera tus indices no quedan invalidados, las estadisticas quedan 
correctas (no hace falta analyze) y si el trabajo de autovacuum no ha podido 
terminar, no quedara el dump parado ni la bd en estado 'catatonico'/no usable. 

Si pones log_autovacuum_min_duration(-1), te avisara en el log de autovacuum si 
alguna tabla tiene un lock (y por tanto saber que consulta y proceso causa el 
conflicto) que impide hacer la limpieza, pudiendo subsanarlo la siguiente noche.

> Muchas gracias y saludos a todos..!
> 
> 
> -
> 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


---   ---
Eduardo Morras 

-
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

2016-06-23 Por tema Gerardo Herzig


- 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] Pregunta sobre indices

2016-06-23 Por tema Francisco Olarte
Hola Alberto:

2016-06-23 6:47 GMT+02:00 Alberto Cuevas :
> Por lo que he leído los Indices me sirven para que la búsqueda sea mas
> rápida.

Basicamente, y en ocasiones se usan para implementar unicidad.


> 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?

Eso de (pk) no es sql  ( otra cosa seria '-- (pk)' ), con lo que
sospecho que no es la sentencia original. En general cualquier duda
que tengas sera mejor resuelta si pones el codigo real que usas, con
algun trozo anonimizado si es secreto .


Normalmente lo que sueles hacer es "id_cliente INTEGER PRIMARY KEY".
Primary key se traduce, entre otras cosas, por "unique not null", y
unique hace que se te cree un indice, para que el servidor pueda
detectar duplicados sin leer toda la tabla. Ademas al hacer primary
key el servidor ya sabe a donde apuntan los foreign keys que declares
en otras tablas sin mas que dar el nombre de tabla referenciada. Y si
usas foreign key en las relaciones de ese tipo la gente que lea tu sql
sabra lo que quieres hacer.

> De ser la respuesta no entonces debo crear 2 indices para id_sucursal  y
> id_documento?

Las foreign key no te las indexa por defecto. La razon es que no le
hace falta, y puede que tu solo las uses en la direccion fk->pk, con
lo que indexarlas seria una perdida de tiempo. Si las usas en la
direccion inversa, lo que es muy habitual, conviene que las indexes a
mano tras crear la tabla ( direccion inversa, pk->fk es p.e. cuando
haces cosas como 'on delete cascade/set null' o 'select c.* from
cliente c, sucursal s where s.id_sucursal = c.id_sucursal and
s..).

En general depende de tus 'use pattern'. Para tus nombres de tabla
tiene toda la pinta de que deberias indexarlas, pero puee que los
llames asi y tengan datos de protones, neutrones y electrones.

Francisco Olarte.

-
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