Avatar billede splatter Nybegynder
24. oktober 2001 - 10:29 Der er 23 kommentarer og
1 løsning

Eksporter tabeller til tekstfil eller lign.

Jeg er ikke interesseret i Oracle egen binary export... Hvordan får jeg eksporteret til en tekstil f.eks?
Jeg har kigget på TOAD\'s eksport, men den bryder ned efter at stykke tid...(der er vist for mange rækker) Hvad bygger TOAD\'s eksport på?
Avatar billede Slettet bruger
24. oktober 2001 - 10:31 #1
Da du nævner TOAD, går jeg ud fra at du har SQL*Net og SQL*Plus tilgængelig?

Kan du ikke bare gøre det fra SQL*Plus?
Avatar billede peter_m Nybegynder
24. oktober 2001 - 10:32 #2
Du laver en spool fil
og smider alt output i den hvis du vil kan du pynte på output via sqlplus
Avatar billede splatter Nybegynder
24. oktober 2001 - 10:33 #3
SQL*Plus... Hvordan? Hvilken kommando? :-)
Avatar billede Slettet bruger
24. oktober 2001 - 10:33 #4
I SQL*Plus skal du bruge kommandoen \'SPOOL\' til at få output ned i en fil.

Fx:

SQL>spool splatter.log
SQL> SELECT felt1 ||\',\' || felt2
2 FROM tabel1;
...
SQL> spool off
Avatar billede Slettet bruger
24. oktober 2001 - 10:35 #5
Hvad mener du med \'SQL*Plus... Hvordan?\'

Har du SQL*Plus på din maskine? Den vil typisk ligge i Start|Programs|Oracle|Application Development|SQL Plus
Avatar billede splatter Nybegynder
24. oktober 2001 - 10:35 #6
vi snakker om meget store tabeller med samlet \"længde\" på over 10000 tegn.
Jeg har prøvet med diverse formateringer, men resultatet er uanvendeligt.
Er der ikke en utility i oracle som kan sende indholdet af en tabel ud i ren tekstformat?
Avatar billede peter_m Nybegynder
24. oktober 2001 - 10:36 #7
Brug spool og se resultatet
Avatar billede peter_m Nybegynder
24. oktober 2001 - 10:37 #8
Du kan du bruge desc til at lave dit spool script
Avatar billede Slettet bruger
24. oktober 2001 - 10:39 #9
Avatar billede splatter Nybegynder
24. oktober 2001 - 10:41 #10
select er ikke en mulighed.
Oracles egen exportutility er en mulighed, men
uddata derfra er ikke læsbart.
Men det er i den retning jeg er interesseret...
Avatar billede teepee Nybegynder
24. oktober 2001 - 10:42 #11
Hvad med en cursor, en loop og utl_file?
Avatar billede Slettet bruger
24. oktober 2001 - 10:49 #12
Brug SQL*Plus og kommandoer SPOOL, TRIM, og TRIMSPOOL, SELECT

Istedet for SELECT * skal du bruge SELECT felt1 || \', \' || ....

Læs i http://technet.oracle.com/doc/server.804/a53717/ch7.htm
Avatar billede peter_m Nybegynder
24. oktober 2001 - 10:50 #13
Jeg kender kun til spool for udlæsning af data til en anden base end oracle..
selv om disse baser har været pæn store så har løsningen været ok

Hvorfor skulle Oracle engentlig have en modsat til SqlLoad da dette vil give nemere mulighed for at forlade en oracle løsning ?
Avatar billede Slettet bruger
24. oktober 2001 - 10:53 #14
Hvorfor er select ikke en mulighed?
Avatar billede splatter Nybegynder
24. oktober 2001 - 11:16 #15
TOAD har en \"save as\" mulighed for et \"GRID\".. Her kan man angive hvordan man vil have tabellen gemt (hvilken \"delimiter\" man vil anvende) Den eksporterede fil som TOAD danner ved denne save as er stort set det vi er ude efter... Men er der nogen der kan fortælle hvordan TOAD genererer dette, så vi evt. selv vil være i stand til at definere flere ting ved en sådan \"save as\"? (er det noget indbygget i TOAD, udnytter den noget Oracle utility, er det en SQL statement af en art?)
Avatar billede Slettet bruger
24. oktober 2001 - 11:19 #16
Kære splatter

Hvorfor kan du ikke bruge verdens simpleste værktøj (SQL*Plus)? Der er endda en kommandolinie og en mulighed for at køre scripts.

Skriv

SQL> SELECT felt1 || \'<delimiter>\' || ...

hvor <delimiter> er fx komma.
Avatar billede splatter Nybegynder
24. oktober 2001 - 11:29 #17
JEG HAR PRØVET SQL+ !!!!!!!!
JEG HAR SAT DIVERSE PARAMETRE !!!
jeg kan ikke få select til at give det resultat jeg skal bruge.


SET RECSEP OFF
SET NEWPAGE NONE
SET PAGESIZE 50000
SET LINESIZE 2500
SET TRIM ON
SET TRIMSPOOL ON
SET HEADING ON
SET COLSEP \";\"

SET ECHO OFF
SET FEEDBACK OFF
SET SERVEROUTPUT ON SIZE 10000
SET TERMOUT OFF


COLUMN SESSION_ID FORMAT 9999999999 TRUNCATED HEADING \'SESSION_ID\'
COLUMN WEEK FORMAT A4 TRUNCATED HEADING \'WEEK\'
COLUMN CLICK_STREAM FORMAT A512 TRUNCATED HEADING \'CLICK_STREAM\'
COLUMN TARGET FORMAT A128 TRUNCATED HEADING \'TARGET\'
COLUMN SITE FORMAT A128 TRUNCATED HEADING \'SITE\'
COLUMN REFERENCE FORMAT A128 TRUNCATED HEADING \'REFERENCE\'
COLUMN KAMPAGNE FORMAT A128 TRUNCATED HEADING \'KAMPAGNE\'
COLUMN \"1\" FORMAT 9999 TRUNCATED HEADING \'1\'
COLUMN \"2\" FORMAT 9999 TRUNCATED HEADING \'2\'
COLUMN \"3\" FORMAT 9999 TRUNCATED HEADING \'3\'
COLUMN \"4\" FORMAT 9999 TRUNCATED HEADING \'4\'
COLUMN \"5\" FORMAT 9999 TRUNCATED HEADING \'5\'
COLUMN \"6\" FORMAT 9999 TRUNCATED HEADING \'6\'
COLUMN \"7\" FORMAT 9999 TRUNCATED HEADING \'7\'
COLUMN \"8\" FORMAT 9999 TRUNCATED HEADING \'8\'
COLUMN \"9\" FORMAT 9999 TRUNCATED HEADING \'9\'
COLUMN \"10\" FORMAT 9999 TRUNCATED HEADING \'10\'
COLUMN \"11\" FORMAT 9999 TRUNCATED HEADING \'11\'
COLUMN \"12\" FORMAT 9999 TRUNCATED HEADING \'12\'
COLUMN \"13\" FORMAT 9999 TRUNCATED HEADING \'13\'
COLUMN \"14\" FORMAT 9999 TRUNCATED HEADING \'14\'
COLUMN \"15\" FORMAT 9999 TRUNCATED HEADING \'15\'
COLUMN \"16\" FORMAT 9999 TRUNCATED HEADING \'16\'
COLUMN \"17\" FORMAT 9999 TRUNCATED HEADING \'17\'
COLUMN \"18\" FORMAT 9999 TRUNCATED HEADING \'18\'
COLUMN \"19\" FORMAT 9999 TRUNCATED HEADING \'19\'
COLUMN STARTTIME FORMAT A25 TRUNCATED HEADING \'STARTTIME\'
COLUMN ENDTIME FORMAT A25 TRUNCATED HEADING \'ENDTIME\'
COLUMN ENGAGED FORMAT A4 TRUNCATED HEADING \'ENGAGED\'



SPOOL F:\\BACKUP\\FINAL_MATRIX.TXT


SELECT SESSION_ID,WEEK,CLICK_STREAM,TARGET,SITE,REFERENCE,KAMPAGNE,
\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",
TO_CHAR(STARTTIME,\'DD-MM-YYYY HH24:MI:SS\') \"STARTTIME\",TO_CHAR(ENDTIME,\'DD-MM-YYYY HH24:MI:SS\') \"ENDTIME\",ENGAGED
FROM FINAL_MATRIX ORDER BY SESSION_ID;


SPOOL OFF;

EXIT;
Avatar billede Slettet bruger
24. oktober 2001 - 11:36 #18
Hvad er der galt med formatet?

Kan du ikke også give et eksempel på hvordan det ser ud og hvordan det ser ud?
Avatar billede splatter Nybegynder
24. oktober 2001 - 11:44 #19
hej joern_h
Dit råd har sgu virket.
Det var en god idé at bruge || mellem kolonnerne.
(Problemet var også at nogle celler records indeholder 0 tegn og nogle indeholder over 2000 tegn.Det løser concat)

Ved du om der er problemer med linesize parameteren?
Selv om jeg sætter den til 20000, hvilket skulle være rigeligt (jeg vil kun have en linje i tekstfilen pr række), så ser det ud til
at der kommer et linjeskift efter 4097 tegn.
Avatar billede Slettet bruger
24. oktober 2001 - 11:47 #20
Felter med NULL value (0 tegn) kan vel klares med NVL(felt, \'<alternativværdi ved null\').
Avatar billede Slettet bruger
24. oktober 2001 - 11:53 #21
Måske kan du løse dit sidste problem ved at sætte size-parameter på spool-kommando.
Avatar billede splatter Nybegynder
24. oktober 2001 - 11:59 #22
Har spool en size-parameter??

I den dokumentation jeg har læst er parameterne :

filename|off|out

Kan man omdefinere en standardstørrelse i en .ini fil eller ....
Avatar billede Slettet bruger
24. oktober 2001 - 12:02 #23
Undskyld - det var serverout, jeg kiggede på. Den virker selvfølgelig ikke.
Avatar billede Slettet bruger
24. oktober 2001 - 12:06 #24
har du prøvet \'show linesize\' for at kontrollere om du kan sætte en så stor værdi som 20000?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester