Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
sacosta5
Contributor III
Contributor III

oracle sql - export csv

Hola a todos,

estoy realizando una consulta directamente a la BD oracle donde armo un campo con varios datos concatenados los cuales guardo en primero en un qvd y luego genero un archivo csv delimitado por "|" de la siguiente manera:

InfoOracle:

load *;

SELECT

          campo1||campo2||campo3 as REGISTRO

      from 

         TABLAS

  where

        CONDICIONES

Store * from InfoOracle into infotest.qvd (qvd);

test:

LOAD  Distinct

      $(VAño) as Año,

      $(VMes) as Mes,

     REGISTRO

FROM [..\..\..\ Carga\Tablas BD\infotest.qvd](qvd);

STORE test [INFO - $(VPeriodoCorte).csv] (txt,delimiter is '|');

Cuando abro el archivo detecto que algunos registros contienen comillas al principio y al final del campo que figura como "REGISTRO" (que contiene varios campos concatenados).

Ejemplo del archivo generado donde el primer registro se genera bien y el segundo tiene las comillas que no corresponden:

registro con comillas.jpg

Dicho archivo tiene miles de registros, pero solo unos pocos se general mal (es decir que tienen esas comillas).

Si muestro esa misma información en una tabla de Qlikview las comillas no se muestran y tampoco figuran si exporto esa tabla a un excel.

El problema está únicamente cuando genero el archivo csv.

Tengo otra manera de generar un csv o alguien sabe de que manera puedo solucionarlo?.

Gracias

5 Replies
rubenmarin

Hola, normalmente las comillas las pone cuando el contenido del campo incluye el separador, es decir, que el campo registro ya incluye algún '|', por lo que tiene que poner las comillas para indicar que todo pertenece al mismo campo.

sacosta5
Contributor III
Contributor III
Author

Hola Rubén,

gracias por tu respuesta, estuve chequeando varios casos que quedaron mal  en ninguno de ellos existe el separador "|" dentro de los campos que conforman REGISTRO.

rubenmarin

Creo que lo que está pasando es que al abrirlo en Excel como csv pone comillas cuando encuentra algún valor especial como una coma, punto y coma, dos puntos..., el demiliter le indica el caracter que quieres usar como separador para generar el txt, porque realmente lo que se genera es siempre un txt, no un csv, pero al poner csv en la extensión el SO lo trata como un csv.

Si lo abres con el bloc de notas podrás ver el archivo original tal como lo crea QV, Excel hace el resto al pensar que realmente es un csv, puedes comprobar que no interpreta | como separador, pone los valores en la columna A.

sacosta5
Contributor III
Contributor III
Author

Hola  Rubén,

probé abrirlo con Notepad++, notepad y me sigue incorporando las comillas en los mismos casos. Intenté modificar el separador y tampoco logro resolverlo.

rubenmarin

Con este script:

InfoOracle:

load *, Registro & ',a' as Registro2, Año & ',b' as Registro3 Inline

[

Registro ,Año , Mes

sfse|sfes|svvsevsv ,2018 ,1

];

STORE InfoOracle into [INFO.csv] (txt,delimiter is '|');

Genera un txt con extensión csv que abierto con el bloc de notas solo entrecomilla el campo Registro y Registro2, que son los que tienen el delimitador en el contenido del campo.

Abierto en Excel solo entrecomilla el 2º, que tiene el delimitador del txt y un caracter especial.

Registro 3, que solo tiene un carácter especial pero no el delimitador, no lo entrecomilla.