Keresés

Részletes keresés

halaloszto Creative Commons License 2016.02.04 0 0 5525

akkor meg kell nézni a plant.

Előzmény: F1DO (5524)
F1DO Creative Commons License 2016.02.04 0 0 5524

Igen, kb 2-3 perc az első 20 de az összes (68e rekord) lejön kb 4 és fél perc alatt..

Előzmény: halaloszto (5523)
halaloszto Creative Commons License 2016.02.04 0 0 5523

a 2  perc alatt lehoztad az összes sort vagy csak az első huszat?

Előzmény: F1DO (5522)
F1DO Creative Commons License 2016.02.04 0 0 5522

Arra mi lehet a magyarázat, hogy ha egy query símán lefuttatva 2 perc alatt eredményt hoz - ám ha ugyanazon query elejére egy create table xy as - .... -t teszek még 45 perc után is csak fut, azaz a query táblásítása hatványozottan több ideig tart mint a síma futtatása?? 

F1DO Creative Commons License 2016.02.04 0 0 5521

Köszönöm az infót!

Előzmény: givons2 (5518)
stopposbácsi Creative Commons License 2016.01.26 0 0 5520

Közben rájöttem, split partition. Viszont, amikor töltenem kell, akkor 10 partíciót kell a végén egyszerre betolnom, úgyhogy az alap kérdés áll. :)

 

Köszönöm.

Előzmény: stopposbácsi (5519)
stopposbácsi Creative Commons License 2016.01.26 0 0 5519

Lehetséges partition exchange egy másik partícionált táblával?

 

Van egy táblám, ami jelenleg 10 ID-t tartalmaz egy partícióban. Meg szereté változtatni, hogy egy partíció egy ID legyen. Ha csinálok egy másik táblát Id-ként egy partícióval, eldobom az eredeti táblát, tudom-e partition exchange használtaával visszatolni az eredeti táblába az adatokat, vagy visszafele is INSERT-et kell használjak?

 

Köszi.

givons2 Creative Commons License 2016.01.22 0 0 5518

Meg lehet a problémát kerülni, ha mondjuk így hozod létre a táblát:

 

create table emp

(datum date default sysdate,

empno number,

ename varchar(40),

salary number);

 

És természetesen a datum oszlopot nem töltöd.

 

 

load data
 infile '/home/valami/adat'
 append
 into table emp
 fields terminated by "," optionally enclosed by '"'
 ( empno, ename, salary )

Nem kell semmi to_char-os konvertálás, a datum oszlop másodperc pontosságú mert date.

 

 

Előzmény: F1DO (5517)
F1DO Creative Commons License 2016.01.22 0 0 5517

Az atdat oszlop VARCHAR2() karakterhossza.... basszus, ez volt túl kevés - és nem fért bele az adott dátumformátumba (szándékozni) konvertált sysdate... 

 

Köszi, mindenhol máshol kerestem a hibát.

Előzmény: rum-cájsz (5516)
rum-cájsz Creative Commons License 2016.01.21 0 0 5516

Az én példámban egy to_char függvénnyel igazítottam a dátumon, de én csak a napot tettem bele, a példatáblában nagyobbra kell venni az atdat oszlop méretét16-ra, és akkor használhatod ezt:

 

atdat "to_char(sysdate,'yyyymmddhh24miss')"

 

 

Előzmény: F1DO (5513)
NevemTeve Creative Commons License 2016.01.21 0 0 5515

Hát, sajnos a NLS_DATE_FORMAT és társai is környzeti változók pedig...

Előzmény: F1DO (5513)
halaloszto Creative Commons License 2016.01.21 0 0 5514

https://docs.oracle.com/cd/B19306_01/server.102/b14215/ldr_control_file.htm#i1004663

 

itt van a control file reference doksi, és egy példa hogyan tudsz olyan oszlopot insertálni sysdate-el ami nincs az adatfileban.

 

Vajk

Előzmény: F1DO (5513)
F1DO Creative Commons License 2016.01.21 0 0 5513

Köszi, az ékezetes karakterekkel történő táblaírás SQL*Loader-nél az alábbi módon megoldódott végül:

LOAD DATA -- parancs után:
CHARACTERSET UTF8

 

és nem kellett az NLS_LANG környezeti változót állítgatni.

 

 

Viszont a formátumozott időbélyeg írásra még nem találtam megoldást..

Előzmény: NevemTeve (5512)
NevemTeve Creative Commons License 2016.01.20 0 0 5512

(Vagy ugyanezen topik utóbbi néhány tucat hozzászólását.)

Előzmény: NevemTeve (5511)
NevemTeve Creative Commons License 2016.01.20 0 0 5511

Sajnos a 'rosszul' meg a 'jól' nem egzakt kategória. Kezdetnek ezt tanuld meg szó szerint: http://web.axelero.hu/lzsiga/ekezet.html

Előzmény: F1DO (5510)
F1DO Creative Commons License 2016.01.20 0 0 5510

Illetve.. a karakterkódolásban van némi hiba.. a CSV-ben lévő magyar ékezetes karakterekkel rendelkező cellaértékek rosszul jelennek meg..

 

F1DO Creative Commons License 2016.01.20 0 0 5509

OK. Az volt a gond, hogy a parancsfile-t amiben írtam UTF kódolású volt, nem ANSI és a parancssori futtatáskor valami krikszkraksz íródott a sqlldr elé.

Működik szépen, márcsak egy dolog kellene - időbélyeg a betöltött rekordokhoz. 

A to_char függvényt próbáltam átírni ennek megfelelő formátumra, illetve a sysdate-et megadni, de erre hibával elszáll és nem hajtódik végre egyetlen importálás sem.

Az SQL* Loader nem ismerné fel ezeket a konvertálásokat?

givons2 Creative Commons License 2016.01.20 0 0 5508

Bocs ez nem neked lett szánva.

Jó a példád !

Előzmény: givons2 (5507)
givons2 Creative Commons License 2016.01.20 0 0 5507

Az oracle kliens tartalmazza az sqlldr-t.

Van a gépeden olyan ?

Ha nincs, tegyél fel egyet.

Előzmény: rum-cájsz (5506)
rum-cájsz Creative Commons License 2016.01.20 0 0 5506

A szerveren is indíthatod, vagy egy kliensen is, ami eléri az adatbázist. De kliensen kell hozzá az SQL Utility nevű dolog, az tartalmazza a loadert.

Ahogy a kiterjesztésből kiderül, én egy windows kliensen próbáltam ki ezt.

Előzmény: F1DO (5505)
F1DO Creative Commons License 2016.01.20 0 0 5505

Köszönöm a segítséget.

Egy dolog nem tiszta még: 

Az SQL * Loader parancssori indítófile-ját (.bat) hol kell elindítani? illetve a teszt.log file hol fog létrejönni?

Az Oracle serveren?

 

Merthogy serverre csatlakozás nélkül kellene mindez.. (windows desktop-ról futtatva)

Előzmény: rum-cájsz (5504)
rum-cájsz Creative Commons License 2016.01.20 0 1 5504

Nem igazán világos, hogy mire gondolsz importáló package alatt. A loader maga az importáló program.

Csináltam neked egy mintát:

http://pastebin.com/xGciDsDC

 

Négy dolog kell neked, ez mind benne van, csak a felhasználót kell megadnod a bat és control fájlokban:

- maga a csv fájl

- egy control fájl, ami a betöltési szabályt tartalmazza

- egy parancssori indító

- egy oracle tábla

 

Előzmény: F1DO (5501)
rum-cájsz Creative Commons License 2016.01.20 0 0 5503

Persze, a loader teljesen jól automatizálható.

Egy cron bejegyzésbe beteszel egy fájlfigyelőt, ami ha észrevesz egy új csv fájlt egy megadott helyen, akkor elindítja a loadert, és utána archivál.

Én ezt sima bash szkripttel szoktam megoldani, de biztos megoldható más nyelven is.

Előzmény: F1DO (5500)
F1DO Creative Commons License 2016.01.20 0 0 5502

(nem a táblából futtatja a query-t hanem arra egy tetszőlegesen megadott query-t/select-et)

F1DO Creative Commons License 2016.01.20 0 0 5501

Illetve ami még eszembe jut esetleg készen meglévő, importáló package használata.. 

 

(a másik 'oldala' megvan ha kell valakinek, azaz oracle táblából query-t futtató, annak eredményét xls-be kiexportáló + e-mailben a táblázatot adott címekre elküldő verzióról tudok/használtam)

 

 

F1DO Creative Commons License 2016.01.20 0 0 5500

Mivel valahogy meg kell oldani a dolgot, a CSV formátum is jó lehet.

 

SQL Loader-t nézzem - ezt lehet ütemezni és meg lehet adni az importálandó CSV-k 'lelőhelyét'?

 

Illetve szükséges még valami hozzá? Gondolok itt pl VB Scriptekre amikkel file-okat lehet mozgatni, nem oracle-ben zajló műveleteket futtatni

NevemTeve Creative Commons License 2016.01.20 0 0 5499

(Mármint az xls-t megnyitni ODBC-vel? Szerintem, ha működik is, tíz nagyságrenddel gyorsabban kapsz eredményt a lentebb írt módszerrel.)

Előzmény: F1DO (5494)
rum-cájsz Creative Commons License 2016.01.20 0 0 5498

ODBC-vel is megoldható, minimális VB progival, csak kérdés, hogy megéri-e a szevedés, amikor ott van a loader.

Előzmény: edesviz (5497)
edesviz Creative Commons License 2016.01.20 0 0 5497

Ha jól emlékszem haverjaim pearl programmal oldották meg. Perl tud excelt adat tömbbe olvasni, és tud cikkklusban sql insertet kiadni.

Előzmény: F1DO (5494)
NevemTeve Creative Commons License 2016.01.19 0 0 5496

Jaja, +1 az exportra text/csv formátumba, az xls[x] nem emberi (vagy gépi) fogyasztásra való. És különben is verziónként változik.

Előzmény: F1DO (5494)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!