Export table into csv

10 views
Skip to first unread message

Mario Martinez

unread,
Dec 18, 2014, 3:32:13 AM12/18/14
to foro...@googlegroups.com
Buenos días a todos!!

que tal os va? 

Tenia una preguntita a ver si alguno podía solucionarme. Tengo una tabla de 15 millones la cual me gustaría pasar a un csv. Desde sql developer es posible hacerlo pero es lentiiisimo. Alguno sabe una manera rápida (desde linea de comandos o con algún tipo de herramienta) ?

Saludos y Feliz Navidad

Franky

unread,
Dec 18, 2014, 3:37:08 AM12/18/14
to foro...@googlegroups.com
Buenas Mario, 

Te reenvío un correo que pasé hace tiempo con dos procesos que me monté yo para este tipo de cosas

A mí me van como un tiro y tarda poco en subir/bajar tabla<->fichero pero tienes que hacer unos cambios sobre el ksh que te explico en el correo.

Saludos y felices fiestas a todos. 
¡Tenemos una copilla o algo pendiente!

Buenas, 

Os adjunto dos scripts muy útiles que tengo sobre todas mis máquinas
Solamente hay que pasarlo a la máquina que tenga conexión con la base de datos en cuestión y cambiar las rutas de trabajo:
#Diferentes rutas en las que vamos a trabajar
DIR_INI="/opt/app/aplsoft/balin/scripts/manuel/"
DIR_LOG=$DIR_INI"log"
DIR_TMP=$DIR_INI"tmp"

en DIR_INI pones la ruta donde lo quieras poner y ahí te creas un directorio tmp y un directorio log

Ejemplo de uso de bcpin: 
./bcp_in.ksh usuario password BBDD fichero.csv ESQUEMA DMC_BI_NEW ';' "TRAIL_NULLCOLS"
Este sube a la tabla  DMC_BI_NEW  (que te la tienes que haber creado) el fichero llamado fichero.csv cuyos campos están separados por ;  
Hay que poner usuario, pass, la base de datos a la que ataquemos y el esquema 

Ejemplos de uso de bcpout:
El primero baja al fichero fichero2.csv toda la tabla DMC_BI_NEW  y lo separa por ;
El segundo baja solamente los campos que le hemos indicado.
Siempre hay que informar de qué separador queremos, el usuario, la pass, la bbdd, y el esquema

./bcp_out.ksh usuario password BBDD fichero2.csv ESQUEMA DMC_BI_NEW ';' "MODO_NORMAL"

./bcp_out.ksh usuario password BBDD fichero2.csv ESQUEMA DMC_BI_NEW ';' "MODO_COLUMNAS" "columna1 columna2 "




--
Has recibido este mensaje porque estás suscrito al grupo "FORO_DBA" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a foro_dba+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
bcp_out.ksh
bcp_in.ksh

Víctor Fernandez Coello

unread,
Dec 18, 2014, 3:39:11 AM12/18/14
to foro...@googlegroups.com

Hola Mario!

Prueba haciendo un procedure que se recorra la tabla, y con UTL_FILE lo vas volcando y separas los campos por "punto y coma". Dime si necesitas ayuda y te busco el código.

FELIZ NAVIDAD!

Un saludo

--

JAP

unread,
Dec 18, 2014, 3:39:38 AM12/18/14
to foro...@googlegroups.com
Esto vale su peso en oro.
--
José Antonio de Pablo Jiménez
Principal IT Consultant & CTO
SYSCONFIG Gestión de Sistemas, SLU
www.sysconfig-gs.net
www.linkedin.com/company/sysconfig-gs

JAP

unread,
Dec 18, 2014, 3:40:19 AM12/18/14
to foro...@googlegroups.com
Esto es plata... je je je (pq falta el código)... si no sería oro tambien

Cristina Garcia

unread,
Dec 18, 2014, 3:46:47 AM12/18/14
to foro...@googlegroups.com
Buenas,

Qué tal??
 
A mi para descargar tablas, que tengo que almacenar por si acaso, me gusta usar el sql loader:



Felices fiestas!!!


Víctor Fernandez Coello

unread,
Dec 18, 2014, 4:04:18 AM12/18/14
to foro...@googlegroups.com
Tienes razón, jefe! jaja.
 
(Ver adjunto)Lo he hecho rápido, no se si te compilará directamente. Tienes que cambiar la select del cursor y la variable ROWTYPE.
 
Si tienes algún problema, dímelo.
 
Un saludo

El 18 de diciembre de 2014, 9:39, JAP <jap...@gmail.com> escribió:


--
Un saludo,
___________________________________
Víctor Fernández Coello

p_extrae_csv.sp

Mario Martinez

unread,
Dec 18, 2014, 11:27:25 AM12/18/14
to foro...@googlegroups.com
Bueeenas de nuevo!! 

Al final utilice el script de Franky que es dinamita pura! :) tardo muy poco en exportar la tabla dentro de un csv. El problema lo tuve al importar el csv en mysql ya que las fechas se habían importado con un formato que mysql no reconocía y tb me daba error con los campos vacíos pero utilizando los comandos del LOAD DATA FILE consegui solucionarlo, el cual os paso por si alguno le sirve en un futuro:

LOAD DATA INFILE 'history_all.csv' INTO TABLE billing.history_tmp FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\n' 
(id, id_service, @vid_transaction, @vid_bill_event, msisdn, @vid_request, @vqueued, @vqueued_date, @vpacked, @vpacked_date, @vdlr_code, @vdlr_date, @vamount, @vcreated_at, @vid_subscriber, @vid_bulk) 
SET 
id_transaction = nullif(@vid_transaction,''), 
id_bill_event = nullif(@vid_bill_event,''), 
id_request = nullif(@vid_request,''), 
queued = nullif(@vqueued,''), 
queued_date = nullif(STR_TO_DATE(@vqueued_date,'%m/%d/%Y %H:%i:%s'),''),
packed = nullif(@vpacked,''), 
packed_date = nullif(STR_TO_DATE(@vpacked_date,'%m/%d/%Y %H:%i:%s'),''), 
dlr_code = nullif(@vdlr_code,''), 
dlr_date = nullif(STR_TO_DATE(@vdlr_date,'%m/%d/%Y %H:%i:%s'),''), 
amount = nullif(@vamount,''), 
created_at = nullif(STR_TO_DATE(@vcreated_at,'%m/%d/%Y %H:%i:%s'),''), 
id_subscriber = nullif(@vid_subscriber,''), 
id_bulk = nullif(@vid_bulk,'');


Muchas Gracias por el script Franky!!! esto me va a sacar de mas de un apuro :) Le doy un 10 a tu script! tu procedimiento Victor no lo he probado pero por si acaso me lo guardo también.

Estaré el día 4 por Madrid pero tengo que hacer tantas cosas que no me va a dar tiempo de ver a nadie :(

Bueno que paséis unas felices fiestas!!!

Un abrazo!

Mario

Reply all
Reply to author
Forward
0 new messages