/// <summary>
        ///     Inicializa los campos PrimaryKey de la tabla.
        /// </summary>
        /// <param name="table">Objeto ClsTable que debe contener toda la información de la tabla.</param>
        private void LoadPrimaryKey(Table table)
        {
            try
            {
                //Query que obtiene los campos keys de la tabla especificada
                string sSql = string.Format(@"SELECT  c.attname
                              FROM pg_index a, pg_class b, pg_attribute c, pg_indexes d, pg_constraint e
                              WHERE d.indexname = e.conname
                                AND  a.indrelid = b.oid
                                AND c.attrelid = b.oid
                                AND  c.attnum = any(a.indkey)
                                AND  e.contype = 'p'
                                AND  a.indrelid = e.conrelid
                                AND d.tablename    = '{0}'
                                AND indisprimary", table.NameTable);

                String campo;

                DataSet dtPrimaryKeys = _conection.InitDataAdapter(sSql);
                DataTable dtTables = dtPrimaryKeys.Tables[0];
                //Almacenamos las primaryKey de las tablas.
                foreach (DataRow drKeys in dtTables.Rows)
                {
                    campo = drKeys["attname"].ToString().Trim();
                    //Busca la columna y le indica que es primaryKey del objeto ClsTable.
                    Column oColumn =
                        table.ColColums.Find(oCol => oCol.NameColumn == campo
                            );
                    if (oColumn != null)
                    {
                        oColumn.PrimaryKey = true;
                        table.ColPrimaryKey.Add(oColumn.NameColumn);
                    }
                    else
                    {
                        ClsTraccer.RunException(
                            "Error al obtener las primary keys de la tabla " + table.NameTable + " - " +
                            drKeys["attname"].ToString().Trim(), "GetPrimaryKey");
                    }
                }
            }
            catch (Exception ex)
            {
                ClsTraccer.RunException(ex, "Error al obtener las primary keys de la tabla " + table.NameTable,
                    "GetPrimaryKey");
            }
        }
        /// <summary>
        ///     Carga la estructura de una tabla(Columnas).
        /// </summary>
        /// <param name="sNombreTable">Nombre de la tabla.</param>
        /// <returns>Devuelve un objeto del tipo ClsTable.</returns>
        private Table LoadTable(String sNombreTable)
        {
            var oTable = new Table(_nameTable, new List<string>(), new List<Column>());
            DataTable dtTable;
            try
            {
                dtTable = _conection.DbConnection.GetSchema("Columns", new[] {null, null, sNombreTable, null});
                //Recorremos todos los registros, para obtener las propiedades de cada una de las columnas de la tabla.
                foreach (DataRow row in dtTable.Rows)
                {
                    using (var oColumn = new Column())
                    {
                        //recorre cada propiedad del campo
                        foreach (DataColumn col in dtTable.Columns)
                        {
                            switch (col.ColumnName.ToUpper())
                            {
                                case "DATA_TYPE": //Tipo de datos
                                    oColumn.DataType = row[col].ToString();
                                    break;

                                case "CHARACTER_MAXIMUM_LENGTH": //Longitud del campo
                                    oColumn.FieldLenght = (row[col].ToString() == "")
                                        ? 0
                                        : int.Parse(row[col].ToString());
                                    break;

                                case "IS_NULLABLE": //Permite valores nulos
                                    oColumn.IsNull = (row[col].ToString() == "YES");
                                    break;

                                case "COLUMN_DEFAULT": //Valor por defecto
                                    oColumn.DefaultData = (row[col].ToString() == "") ? "Null" : row[col].ToString();
                                    break;
                                case "COLUMN_NAME": //Nombre del campo
                                    oColumn.NameColumn = row[col].ToString();
                                    break;
                            }
                        }
                        oTable.ColColums.Add(oColumn);
                    }
                }
                LoadPrimaryKey(oTable);
            }
            catch (Exception ex)
            {
                ClsTraccer.RunException(ex, "Error al inicializar el esquema de la tabla " + _nameTable,
                    "LoadTable overloads1");
            }
            return oTable;
        }