Mostrando entradas con la etiqueta tip. Mostrar todas las entradas
Mostrando entradas con la etiqueta tip. Mostrar todas las entradas

Nota rápida sobor SQL Loader

Cada vez que me teño que por con SQL Loader non me lembro da maioría das cousas e perdo moito tempo, vou usar esta entrada para reflexar o que uso máis a miúdo

Sacado da documentación de Oracle


  • CHARACTER SET: para especificar a codificación dos datos de entrada, no meu caso xeralmente UTF8
  • FIELDS TERMINATED BY: para especificar como están separados os campos no ficheiro de entrada, WHITESPACES, 'caracter', X'codigo hexadecimal'
  • se poden usar funcións ao carón dos nomes de campo, pero teñen que ir entre ", útil para convertir tipos de datos
  • SKIP: para indicar o número de filas que se deben excluir do procesamento do ficheiro (para eliminar cabeceiras e demáis)
  • WHEN: útil para filtrar rexistros que non interesen
  • FILLER: non cargamos a columna na táboa (está no ficheiro pero non nos interesa)
  • EXPRESSION: para poder asignar unha expresión SQL a unha columna

SQL Loader é unha ferramenta moi flexible que nos permite facer moi doadas as cargas de ficheiros en texto plano, pero ás veces é un pouco complicado chegar a collerlle o punto. Agora unha pequena plantilla do ficheiro de control

Parámetros opcionais en Oracle PL/SQL

Segundo a documentación de Oracle sobor de subprograms en PL/SQL non hai parámetros opcionais. O que si que podemos facer é darlle un valor por defecto, así, se non o pasamos automáticamente se lle asignaría un valor co que funcionaría coma un parámetro por defecto

Saúdos

Erro en cursor de Oracle (missing right parenthesis)

Nalgunhas ocasións ao ter que actualizar un feixe de filas dunha táboa (ou varias) é necesario facer uso dun cursor para poder facer os cálculos pertinentes e poder acadar o resultado desexado

Levo anos usándoos e nunca tivera este problema (sí moitos outros), o caso é que ao executar o PL/SQL dame un erro ORA-00907 missing right parenthesis na definición do cursor.



Revisando o cursor vexo que a consulta está ben e se executa sen problemas fora do cursor, a consulta é a seguinte



Se lle quito a parte do order by o cursor se executa correctamente, pero necesito ese order by, buscando por internet cheguei a esta páxina onde comentan que os parénteses non son necesario, efectivamente quitando os parénteses xa funciona, pero nunca antes me tivera pasado e sempre os usaba por unha cuestión de claridade e lexibilidade do código

En fin por se vos serve de axuda

Entrada truncada a X caracteres en Oracle


Se algunha vez ao lanzar un proceso pl/sql dende sqlplus te atopas con algún erro similar o que deberías facer é buscar algún espacio ao comenzo da liña, algúns editores manteñen o último identado que fas co que se che pode escapar, por exemplo
DECLARE
declaración variables ...
BEGIN
código do pl/sql
 END; -- aquí temos un espacio antes do END
  / -- aquí outro espacio antes do fin do ficheiro

Neste caso, na versión 8i este código podería non executarse correctamente e dar un erro similar ao do título do post. O caso é que na versión 10g non parece funcionar igual xa que o mesmo ficheiro executado co sqlplus 8i e o 10g no primeiro non funciona e no segundo sí

Agardo que vos sexa de axuda

¿Cómo comprobar se falta algún elemento dunha lista consecutiva?

Levo un tempo entrando no proceloso mundo dos DW, e para iso hai que comezar coa fase de ETL, nesas andaba cando deime conta que necesito verificar se os datos foron cargados correctamente, como non ando moi ben de tempo o que fixen foi unha consulta que a lo menos me diga se me falta algunha data por cargar, logo habería que verificar que nesa data se cargaron todos os datos (inda que tal e como o teño montado se me falla algún dato debería fallar todo o día)

Logo de botarlle unha pensada lembreime da pseudocolumna rownum (distinta do rowid), e pensei que podería serivirme para conseguir unha lista de días  e machealos contra as distintas datas da miña tabla, a consulta resultado é a seguinte



É unha consulta moi sinxela, pero a min polo momento me funciona e coido que pode ser de utilidade

Un saúdo