Buscar este blog

jueves, 31 de marzo de 2022

Unificar 2 csv en UNO - linux

                       

                       

nombreFicheroAux="informe.csv"

nombreFichero="INFORME_"$FECHA_HORA_FICHERO

nombreFicheroIso=$nombreFichero".csv"

hdfs dfs -text  $RUTA_DESCARGA_FICHERO/* >> $nombreFicheroAux

(en RUTA_DESCARGA_FICHERO, se encuentra los datos que vamos a volcar en $nombreFicheroAux)

cat $RUTA_INFORME_CONSULTA"cabecera_marca.csv" tail +2 $nombreFicheroAux >> $nombreFichero


(Con el comando cat, cogemos la cabecera y la metemos en el $nombreFicheroAux junto con el "body(con los datos)")

iconv -f utf-8 -t iso-8859-1 $nombreFichero -o $nombreFicheroIso


Guardar este nombreFicheroIso en hdfs o aws s3.

miércoles, 30 de marzo de 2022

PIG LATIN

Eliminar los duplicados de un archivo en HDFS con PIG. 

informePig = LOAD $entradaInfUno USING PigStorage(';') as (CAMPO1:chararray,CAMPO2:chararray); 

informeSinDuplicados = DISTINCT informePig; 
store informeSinDuplicados INTO '$salidaInfUno' USING PigStorage(';'); 

 Importante las comillas en $salidaInfUno. 

 Para la llamada al PIG. 

 pig -param entradaInfUno=$rutaficherosentrada -param salidaInfUno=$rutaficherossalida -file $rutadelarchivopig 

 Eliminar los duplicados, y en el caso de existir varios, quedarnos con fecha mayor.

 informePig = LOAD $entradaInfDos USING PigStorage(';') as (CAMPO1:chararray,CAMPO2:chararray);; 

 informe = DISTINCT informePig; agrupados = group informe by (CAMPO1:chararray,CAMPO2:chararray); no meter la fecha. 

 res = foreach agrupados 
sorted = order informe BY fechaIni ASC; 
top = limit sorted 1; 
generate flatten(top); 
}; 

 store res INTO $salidaInfDos USING PigStorage(';');

martes, 5 de mayo de 2020

Datatable JQUERY

function datatableFactoryServer(table,rowclick,columnas,url_servicio,parametros_tabla,no_ejecutar){ url = url_servicio; tableConfig = { "language": { "processing": 'cargando', "sSearch": "Buscar:  ", "sEmptyTable": "No se encontraron resultados", "sLengthMenu": "Mostrados _MENU_ registros", "oPaginate": { "sFirst": "Primera Página", "sLast": "Última Página", "sNext": "Siguiente", "sPrevious": "Anterior" } }, "processing": true, "searching": false, "bInfo" : false, "bPaginate": true, "bLengthChange": true, "serverSide": true, "ajax": { "url": "/ajax/"+url, "type": "GET", "data": function (data) { parametros_tabla(data) }//FUNCIÓN CALLBACK PARA CARGAR PARAMETROS }, "columns": columnas, "initComplete": function () {//OCULTAR BOTONES ACCION TABLA CUANDO NO HAY DATOS var api = this.api(); settings = api.settings(); if (settings && settings[0] && settings[0].aLengthMenu && settings[0].fnRecordsTotal && settings[0].fnRecordsTotal() == 0) { // Si no hay registros, ocultar los elementos de paginación $(settings[0].nTableWrapper).find('.dataTables_paginate, .dataTables_length, .dataTables_info').hide(); $("#" + id_tabla + " tbody tr").addClass("nop"); } }, //MANTENER EL ORDEN DE LAS COLUMNAS "stateSave": true, "iCookieDuration": 60*60*24, // 1 day "stateSaveParams": function (settings, data) { //No se guardan las columnas data.columns = null; } } //ELIMINAR LA LLAMADA A SERVIDOR CUANDO NO PROCEDA LA CARGA. EVITAR 1 CARGA AUTOMÁTICA if (typeof no_ejecutar !== 'undefined' && no_ejecutar){ delete tableConfig.serverSide; delete tableConfig.ajax; } table = table.DataTable(tableConfig); $('div.dataTables_filter input').addClass('form-control'); $('div.dataTables_length select').addClass('form-control'); $("#" + id_tabla + " tbody").on( 'click', 'tr', function () { rowclick(table,this); //ACTIVAR CLIK EN FILA }); table.on( 'draw.dt', function () { date_convert();//FUNCIÓN PARA FORMATEAR FECHAS } ); return table; }

miércoles, 15 de enero de 2020

Comandos Linux

Modificación de ficheros y reinicio en entorno linux, despliegue de aplicaciones:: su - XXX -> cambiar usuario logado a XXX cd xxx -> acceder a carpeta xxx ls -> listar directorio vi configuration.php -> abrir el fichero configuration.php para editar (pulsar click derecho) :wq! guardar y salir del fichero editado v:q! salir sin guardar. sudo -u root /usr/bin/systemctl restart apache2  reiniciar apache2 ps -ef | grep httpd   comprobar que se ha reiniciado los servicios. ssh nombremaquina  conectarnos de una maquina a otra

jueves, 30 de mayo de 2019

Query para dividir un registro con fecha desde y hasta en tantos como meses ocupe

SELECT * MOD(CAST((TABLANUMEROSAUX.numero - 2) + MES_DESDE as numeric), 12) + 1 MES_FACTURAR, ANYO_DESDE + CEIL(CAST((MES_DESDE + TABLANUMEROSAUX.numero - 1) / 12 as numeric)) - 1 ANYO_FACTURAR FROM TABLA_CON_REGISTROS FAC JOIN TABLANUMEROSAUX on TABLANUMEROSAUX.numero <= (SELECT ((ANYO_HASTA - ANYO_DESDE) * 12) + MES_HASTA - MES_DESDE + 1) TABLA_CON_REGISTROS, TABLA CON LOS CAMPOS FECHA DESDE Y FECHA HASTA ENTRO OTROS. TABLANUMEROSAUX, TABLA CON CAMPO NUMERO, SECUENCIAL, 1 , 2,3,4,5,6,7,8...

domingo, 27 de enero de 2019

Instalar oracle 12c en docker

Buenas, siguiendo esta dirección:


oraclespin.com/2018/03/30/docker-installation-of-oracle-database-12c-on-mac/





docker pull absolutapps/oracle-12c-ee
docker run -d --name oracle-12cR1-ee -p 49160:22 -p 49161:1521 --privileged absolutapps/oracle-12c-ee
docker logs -f oracle-12cR1-ee
docker start oracle-12cR1-ee  (If not started)
docker exec -it oracle-12cR1-ee /bin/bash
echo $ORACLE_SID
sqlplus system/oracle@//localhost:1521/orcl

docker ps

jueves, 24 de enero de 2019

CONSULTAS INTERESANTES

/*CONSULTAS INTERESANTES**/
/*VER EL CONTADOR DE UN DETERMINADO CAMPO POR MES Y AÑO*/
select count (*) as contador,
  EXTRACT(MONTH FROM CREATION_TIME) as mes,
  EXTRACT(YEAR FROM CREATION_TIME) as anio
FROM USUARIO p
WHERE id>1 AND BORRADO=0
GROUP BY EXTRACT(YEAR FROM CREATION_TIME),EXTRACT(MONTH FROM CREATION_TIME)
ORDER BY anio,mes ASC;

GRANT SELECT, insert, update, delete ON ESQUEMA.XXX to R_ROL_LE;

/*CALCULAR EL VALOR MAXIMO DE UN CAMPO DE LAS TABLAS INDICADAS**/
(SELECT MAX(ID1)+1 FROM (
      SELECT MAX(ID) "ID1" FROM  USUARIO
       UNION
       SELECT MAX(ID) FROM  UNIDADFISICA))
     
/**Crear tablespace de datos e indices**/
CREATE TABLESPACE DATOS_xxx datafile 'xxx_datafile.dbf' size 20M AUTOEXTEND ON;
CREATE TABLESPACE IDEX_xxx datafile 'xxx_index_datafile.dbf' size 20M AUTOEXTEND ON;



/**1) Recuperar fechas superiores a 17/02/2003 sin contar los fines de semanas.*/

select fecha
from (
select distinct trunc(CREATION_TIME) fecha
from USUARIO
  where trunc(CREATION_TIME) > to_date('17/02/2007','dd/mm/yyyy')
  and to_number(to_char(CREATION_TIME,'d')) < 6
  order by trunc(CREATION_TIME) desc
)


/**2)Sumar 5 días a la fecha dada.**/

select to_date(sysdate)+5 from dual;

/*devolver en un campo valores de 3 campos**/
SELECT O.*,'NOMBRE-' || to_char(CAL.GRUPO)||to_char('-')||SUBSTR(TO_CHAR(CAL.ANO),3)||
                     CASE WHEN LENGTH(TO_CHAR(CAL.CODCALIDAD)) < 2
          THEN '00'||TO_CHAR(CAL.CODCALIDAD)     
          END ||
       CASE WHEN LENGTH(TO_CHAR(CAL.CODCALIDAD)) >1 AND LENGTH(TO_CHAR(CAL.CODCALIDAD))<3 p="">      "     THEN '0'||TO_CHAR(CAL.CODCALIDAD)        
        END|| "+
        CASE WHEN LENGTH(TO_CHAR(CAL.CODCALIDAD)) >2
          THEN TO_CHAR(CAL.CODCALIDAD)       
        END
AS CERTIFICADO FROM T  o
JOIN L t on o.codl=t.codl
JOIN PO a on t.costact=a.id
JOIN G cal on cal.IDG=a.id
WHERE o.coddar IN (?1) 
    AND t.fecha between  ?2 and ?3
    ORDER BY t.fecha asc,o.orden2 asc,o.orden asc
                       
Si queremos saber cuales son las sentencias a ejecutar para poner a disabled nuestras constraint, ejecuta:
select 'ALTER TABLE '||substr(c.table_name,1,35)|| ' DISABLE CONSTRAINT '||constraint_name||';'
 from user_constraints c, user_tables u where c.table_name = u.table_name;

 Si queremos saber cuales son las sentencias a ejecutar para poner a enabled nuestras constraint, ejecuta:
select 'ALTER TABLE '||substr(c.table_name,1,35)|| ' ENABLE CONSTRAINT '||constraint_name||' ;' from user_constraints c, user_tables u where c.table_name = u.table_name;

/*Con la que obtendremos la tabla y el número de registros de dicha tabla.**/
SELECT * FROM ( SELECT TABLE_NAME, to_number( extractvalue( xmltype( dbms_xmlgen.getxml('select count(*) c from '||TABLE_NAME)) ,'/ROWSET/ROW/C'))
COUNT FROM user_tables ORDER BY TABLE_NAME ) c ORDER BY COUNT

Hay un parámetro que te dice cuado hay que hacer un rebuild, después de hacer muxos insert en una tabla.
Blevel, si un índice compruebo este parámetro si es mayor que 4 hacer rebuild
Select Blevel from user_indexes

 EXEC  dbms_stats.gather_table_stats ('AA','USUARIO')

lunes, 19 de noviembre de 2018

select count (*) as contador,EXTRACT(MONTH FROM CREATION_TIME) as mes,
 EXTRACT(YEAR FROM CREATION_TIME) as anio
FROM TABLA p WHERE CAMPO=1 AND BORRADO=0
GROUP BY EXTRACT(YEAR FROM CREATION_TIME),EXTRACT(MONTH FROM CREATION_TIME) ORDER BY anio,mes ASC;


Devolver el contador de campo a buscar agrupados por año

Grant sobre rol de base datos

GRANT SELECT, insert, update, delete ON ESQUEMA.XXX to R_ROL_LE;

Cambiar valor de la secuencia al mayor ID de la base de datos

declare
  v_sql varchar2(500);
begin
  EXECUTE IMMEDIATE 'drop sequence "ESQUEMA"."HIBERNATE_SEQUENCE"';
  SELECT 'CREATE SEQUENCE "ESQUEMA"."HIBERNATE_SEQUENCE" MINVALUE 1 START WITH '||  
    (SELECT MAX(ID1)+1 FROM (
      SELECT MAX(ID) "ID1" FROM  XXXY
       UNION
      SELECT MAX(ID) FROM  XXX)
  )    
  ||' INCREMENT BY 1 CACHE 20'
  INTO v_sql
  FROM dual;

  EXECUTE IMMEDIATE v_sql;

  dbms_output.put_line(v_sql);
end;

jueves, 1 de noviembre de 2018

Crear tablespace de datos e indices

CREATE TABLESPACE DATOS_xxx datafile 'xxx_datafile.dbf' size 20M AUTOEXTEND ON;

CREATE TABLESPACE IDEX_xxx datafile 'xxx_index_datafile.dbf' size 20M AUTOEXTEND ON;

martes, 5 de julio de 2016

Crear tabla con dblink en otra db - PHP


Suponemos que en este punto estamos conectados a la base de datos A.

1) Abrir conexión a DB donde queremos crear la tabla.

$conexion = new ConnPostgres($conn->host, $conn->port, $conn->data_base, $conn->user, $conn->password);

2) Crear la SQL donde creamos una tabla a partir de una select sobre otra tabla.

$sql = 'create table '.$nombreTabla.' as select q.NOMBRECAMPO/OS from dblink('.'\'dbname=NOMBREDB user=USER password=PASSWORD'.'\', '.'\'select NOMBRECAMPO/OS
from TABLA where
xxxxx='.$xxxxx.'\')as q (NOMBRECAMPO/OS, NOMBRECAMPO character varying(25))';

3)Lanzar query.

$conexion->query($sql);

martes, 17 de mayo de 2016

NVL PL/SQL de Oracle

La función NVL forma parte del lenguaje PL/SQL de Oracle.
NVL( Expresión1, Expresión2 )
 Si Expresión1 es null, se devolverá valor de Expresión2, util para operaciones.

 Por ejemplo:
1SHOW NVL( NULL, 'Es nulo' )
2Es nulo         

Envio de email. javax.mail

    public static void enviarCorreo(List emailsDestinatarios,String pAsunto,String pMensaje) {
           try {
                   if (emailsDestinatarios.size()>0){
                   log.info("Creando el correo a enviar...");
                   InternetAddress from = new InternetAddress(mailConfig.getProperty(MAIL_SENDER));
                   from.setPersonal(mailConfig.getProperty(MAIL_ALIAS), "iso-8859-1");

                  
                   MimeMessage message = new MimeMessage(session);  
                   message.setFrom(from);   
                   message.addRecipients(Message.RecipientType.BCC, emailsDestinatarios.toArray(new InternetAddress[emailsDestinatarios.size()]));
                   message.setSubject(pAsunto);  
                   message.setSentDate(new Date());
                  
                   MimeBodyPart cuerpoEmail = new MimeBodyPart();
                   cuerpoEmail.setText(pMensaje, "us-ascii");
                   cuerpoEmail.setHeader("Content-Type", "text/html");
                   MimeMultipart contenido = new MimeMultipart();
                   contenido.addBodyPart(cuerpoEmail);
                   message.setContent(contenido);
                  
                   log.info("Correo a enviar creado.");
                   log.info("Enviando el correo...");
                   Transport.send(message);
                   log.info("Correo enviado.");
                }else
                    log.info("No hay destinatarios válidos.");             
           } catch (MessagingException me) {
               log.error("Se ha producido un error en el envío del correo.", me);
           } catch (UnsupportedEncodingException ue) {
               log.error("Se ha producido un error con el encoding del correo.", ue);
           }catch (Exception mex) {
                mex.printStackTrace();
                log.error("No se pudo enviar el correo." + mex.getMessage());
           }
       }

Columnas autoSize Export Excel

Importante a la hora de exportar en excel, será siempre necesario adaptar el ancho de las celdas al texto que hay en ella.


                    //Recorremos las columnas (l) y ajustamos el ancho
                    for (int i = 0; i <= l; i++) {
                        sheet.autoSizeColumn(i);
                    }

No facerlo solo en la cabezera, es frecuente esto de realizarlo solo a la fila 0.

Literales numéricos

Java 7. Liempieza en código, buena práctica

int variableUno = 1000000;
int variableDos= 1_000_000; // mucho mejor!!

NO UTILIZAR _ para iniciar la variable
int lit1 = _1_000_000; //ERROR
int lit2= 10_0000_0; // Esta permitido.

Helper para funciones más habituales


Declarar componente Helper, que se utilizará en toda la aplicación.

@Component
public class Helper {
   private static final String POSTERIOR = "posterior";
    private static final String ANTERIOR = "anterior";
   
    private static final Logger log = Logger.getLogger("Helper");

    public static String getFileName(String nombre) {
        return nombre.substring(nombre.lastIndexOf('/')+1);   
    }
    public static String getProperty(String key){
        return ApplicationContextProvider.getContext().getMessage(key, null, null);
    }
    public static void showGlobalError(String claveSumario,String claveDetalle){
        showGlobalMsg(null, FacesMessage.SEVERITY_ERROR, claveSumario,claveDetalle);       
    }
    public static boolean isPostback() {
        return FacesContext.getCurrentInstance().isPostback();
    }

}

En cualquier clase, usar

import com.eon.plinv.util.Helper;
Helper.isPostback();

Helper.getProperty(APP_INFORMES_DIRECTORIOINFORMES) donde DIRECTORIOINFORMES es
private static final String APP_INFORMES_DIRECTORIOINFORMES = "app.informes.directorioinformes";

miércoles, 25 de noviembre de 2015

Problemas con PERMISO Oracle



Persistence.xml, para que aparezca en consultas el nombre del esquema justo antes del nombre de la tabla.

myschema


Querys Nativas de oracle, indicar  {h-schema} justo antes del nombre de la tabla.

select * from {h-schema}USUARIOS


miércoles, 21 de octubre de 2015

Evitar submit formulario al pulsar INTRO



  id="form"
  enctype="multipart/form-data"
  includeRequestParams="true"
  includeViewParams="true"
  onsubmit="return false;"
  onkeypress="if (event.keyCode == 13) {return false; }"> 

martes, 5 de mayo de 2015

SQL ORACLE - CALCULOS FECHAS


Buenas,

Comento aquí varias operaciones con fechas que me han resultado interesante.

1) Recuperar fechas superiores a 17/02/2003 sin contar los fines de semanas.

select fecha
from (
select distinct trunc(F_PRET_FECHA_LIMITE_FIN) fecha
from NIM_M_PROYECTO_ESTUDIO_TECNICO
where trunc(F_PRET_FECHA_LIMITE_FIN) > to_date('17/02/2003','dd/mm/yyyy') and
to_number(to_char(F_PRET_FECHA_LIMITE_FIN,'d')) < 6
order by trunc(F_PRET_FECHA_LIMITE_FIN) desc
)


2)Sumar 5 días a la fecha dada.

select to_date('10/06/2007')+5 from dual;