Vergesst die 15Minuten! 
Vielleicht hätte ich noch ein Wörtchen zu meinen Testdaten verlieren sollen.
Um ungefähre Zeiten zu bekommen, habe ich das ganze ebenfalls in Perl geschrieben.
@data_ts = ();
CREATE_TESTDATA(\@data_ts, 1_000_000);
OUTPUT_TESTDATA("testdata.csv", \@data_ts, 50_000_000, ",");
CREATE TABLE testdata
COPY testdata FROM "testdata.csv"
DROP testdata
Als Zeiten bekomme ich dann:
May 28 09:36:53 BENCHMARK: start!
May 28 09:37:07 BENCHMARK: prepare: 1000000ts=13.675299sec 1000000int=0.948979sec (nur zum Vergleich! array[int, int])
May 28 09:38:06 BENCHMARK: out csv ts: 50000000=58.487664sec
May 28 09:41:09 BENCHMARK: in ts: 50000000 create=0.019609sec copy=183.09616sec drop=0.562754sec
als Verifikation:
1.3G May 28 09:38 testdata.csv
cat testdata.csv | awk "END {print NR;}"
49998775
SELECT count(*) FROM testdata;
count
----------
49998775
im zweiten Durchlauf: + 50Mio (ohne drop)
May 28 09:56:28 BENCHMARK: in ts: 50000000 copy=183.664664sec
im dritten Durchlauf: + 50Mio (ohne drop)
May 28 10:01:31 BENCHMARK: in ts: 50000000 copy=195.304385sec
im vierten Durchlauf: + 50Mio (mit drop)
May 28 10:09:53 BENCHMARK: in ts: 50000000 copy=209.041198sec drop=0.829833sec
d.H. obwohl ich gerade nur noch 55204k RAM frei habe geht das recht fix!
Belegt für 3-4 Minuten 80-95% CPU-Last auf einem Kernchen und dann ist fertig!!!
Wenn ich mit meinem Import realer Daten auch nur in den 30min Bereich kommen würde wäre ich vollstens zufrieden.
(hab gerade 300 Datensätze und mit 8Stunden ist der Import ein Witz, wenn ich weiß das die Hardware ja um einiges schneller ist!
)
Lesezeichen