Hirdetés
Új hozzászólás Aktív témák
-
válasz
Petya25
#4509
üzenetére
a probléma pár órás tojtorozása után nekem úgy tűnik, hogy a legegyszerűbb megoldás a következő:
csinálsz egy táblát, olyan szerkezettel, ami neked tetszik, plusz hozzáadsz egy oszlopot, pl. sor néve, text típussal:tmp=> \d merestmpTable "public.merestmp"Column | Type | Collation | Nullable | Default--------+------------------+-----------+----------+--------------------------------------id | bigint | | not null | nextval('merestmp_id_seq'::regclass)subid | bigint | | |azon | text | | |meres1 | double precision | | |meres2 | double precision | | |meres3 | double precision | | |meres4 | double precision | | |sor | text | | |utána belemásolod az input fájljaidat úgy, hogy a szövegből minden sort egyben tegyen bele a sor mezőbe:
\copy merestmp(sor) from '/tmp/mteszt.txt';Majd adatbáziskezelős függvényekkel szétszeded a sorokat.
update merestmp set subid=id,azon=trim(both from sor) where array_length(regexp_split_to_array(sor,' +'),1)=1;ezek után a subid-t beállítod az előtte levő sorra:
update merestmp m1 set subid=(select max(subid) from merestmp m2 where m2.id<m1.id) where array_length(regexp_split_to_array(sor,' +'),1)=5;
ennél a megoldásnál nyilván van szebb is, windowing funkciókkal...
utána már csak regexp-ekkel ki kell szedni a mezőket a sorból és betenni a helyükre. -
válasz
Petya25
#4509
üzenetére
nem ismerem az mssql-t, postgresql-ben így csinálnám:
csinálnék egy táblát, amiben van egy id mező, aminek serial (más adatbáziskezelőkben autoincrement), meg van benne egy másik id2 mező, aminek a defaultja egy serial aktuális értéke, van egy text mező, meg négy real.
tennék rá egy szabályt, hogyha mind a négy real mezője null, akkor a második mezőt növelje egyel és úgy húzza be a többi sort.szerk: persze a triviális megoldás az, ha awk-val insert-té alakítod a fájlokat.
szerk2: esetleg dobj fel valahova 3-4 ilyen kis fájlt, amivel kísérletezni lehet.
Új hozzászólás Aktív témák
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- 188 - Lenovo LOQ (15IRX10) - Intel Core i5-13450HX, RTX 5060
- Telefon felvásárlás!! Samsung Galaxy S25, Samsung Galaxy S25 Plus, Samsung Galaxy S25 Ultra
- Eladó Samsung Galaxy Note 10 8/256GB / 12 hónap jótállással!
- Samsung Odyssey G5 C32G55TQWR 32 Ívelt 1000R WQHD Gamer Monitor 6 hó garancia Házhozszállítás
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest


