Adatbázis: SQL, XML DB

PgSQL copy from csv (invalid input syntax)

Üdv!

Egy PgSQL táblába (pgsql-9.4, win7 x64) szeretnék importálni csv formában adatokat, de hibát ad.
A data.csv:

1;258;2
2;258;2
3;258;2
4;258;1
// ...stb

A pgadmin-ban:
copy data from 'd:/data.csv' with delimiter ';' csv;

A hiba:
ERROR: invalid input syntax for integer: "1"
SQL state: 22P02
Context: COPY data, line 1, column prodid: "1"

A 'data' tábla:
prodid integer NOT NULL,
pid integer NOT NULL,
qty double precision NOT NULL,

Valami olyasmit olvastam a neten, hogy a fájl elején "BOM" miatt lehet a probléma. Másoljam át egy editorral az adatokat, mentsem el egy új fájlba. De nem segített.

Van ötlete valakinek, hogy mi lehet a PgSQL gondja pontosan?

joomla: "Invalid Parent ID" cikk mentésekor

Sziasztok.

Most egy félig megoldott probléma után teszem fel a kérdést.

Adott localhoston egy joomla3.x.x, amire szerveroldalról lementett sql-ből toltam rá content-et kategóriákkal együtt. (az eredeti táblákat töröltem)

Látszólag minden rendben volt, adminoldalon bejöttek a cikkek, csakhogy mentéskor a tárgy szóban megadott szottyot írta ki:
Invalid Parent ID

Kicsit kutatva kiderült, hogy minden menüt és kategóriát az ún. "Újraépítés" gombbal újra kell építenem, majd ez nem elég, a menükezelőnél is meg kell mindezt ismételni. ( http://www.joomla-tips.org/joomla-troubleshooter/save-failed-with-the-f… )
Ekkor megkíséreltem egy cikk módosítás utáni mentését: nem ment, illetve mentés megvolt, de a degenerált hibaüzenet ott díszelgett még mindig.
Kiderült, hogy a kategóriák mindegyikét menteni kellett, külön-külön megnyitogatva őketparenttől a sublategoriákig.
Ezután már ment a cikkek mentése.

1. kérdés: Mi zajlott közben a háttérben? Valaminek az újraindexelése?

2. kérdés: ha cikkeken belül kereszthivatkozásaim vannak egy másik cikkre (ugyanazon weboldalon belül), az ID-k miért nem oda mutatnak ahova mutatnak? Minden egyes cikknél újra kell írnom ezeket a linkeket kézzel?

--------
Nos, kicsit érdekes a kérdés is, de nagyjából látszik mennyire nem értek hozzá. Eddig segítséget ebben a témában csak innen szereztem, így előre is kösz a javaslatokat

[SQL] Lehet ezt egyszerűbben?

Van egy MySQL adatbázisom, benne 2 tábla: transactions, parties. Utóbbin idegen kulcs az elsőre. Pénzügyi tranzakciók. A frontend listázni akarja a tranzakciókat egyik fél (party) szempontjából: max 50 sor/lap, egyenleg oszlop, az összes választható lapot mutatni kell, index a befoglaló dátum. Erre 2 select van: egyik a lapokat, másik az aktuális lap sorait listázza.Lapok listázása:


SELECT date_start, date_end, (@balance := @balance + sum_amount) - sum_amount AS start_balance
FROM (
  SELECT MAX(date) AS date_start, MIN(date) AS date_end, SUM(amount) AS sum_amount
  FROM (
    SELECT transactions.t_date AS date
    FROM transactions
    INNER JOIN parties ON parties.transaction_id = transactions.id
    WHERE parties.account_id = 12345
    ORDER BY transactions.t_date ASC, transactions.id ASC
  ) AS all_transactions
  JOIN (SELECT @rn := 0) i
  GROUP BY FLOOR(@rn := @rn + 1 / 51)
  ORDER BY date ASC;
) AS pages
JOIN (SELECT @balance := 0) i

Aktuális lap listázása:


SELECT transactions.*
FROM transactions
INNER JOIN `parties` ON `parties`.`transaction_id` = `transactions`.`id`
WHERE parties.account_id = 12345
ORDER BY transactions.t_date ASC, transactions.id ASC
LIMIT 50 OFFSET 50

Az aktuális lap kezdőegyenlege az első lekérdezésből származó start_balance lesz, a soronkénti számítást onnan már a frontend intézi.

Most azon kattogok, hogy nem-e lehetne egyszerűbben, kevesebb subselect használatával listázni a lapokat.
SQL guruk..?

(A t_date egy DATE oszlop, nyilván nem unique.)

PROGRESS database SQL92, java

Sziasztok, megörököltem egy Progress adatbázist használó ERP rendszert. Maga a program jól működik, de csak a 4GL rész van beállítva, az SQL92 kompatibilis mód nem elérhető. (Az installed komponensek között szerepel, de java gondjai vannak) Próbáltam utánajárni a szükséges lépéseknek(google, progress fórum), de ennek ellenére nem sikerült beállítani.
Az os SUSE 11.3, az adatbázis PROGRESS 9C.
Van esetleg valakinek ezzel kapcsolatban ismerete, tapasztalata?
A többit privátban, köszönöm előre is a segítségeteket!

UPDATE #1
A java telepítése megoldódott, a kérdés még mindig ugyanaz, van valaki itt a fórumozók között, akinek van ismerete, tapasztalata a PROGRESS adatbázissal kapcsolatban? Főleg az SQL92 része érdekelne...

könyvtári adatbázis

Sziasztok!

Egy könyvtári adatbázist szeretnék létrehozni minél egyszerűbb módon.
A következő struktúrára gondoltam. Van egy gyerek amihez tartozik egy osztály és azok a könyvek amik nála vannak.
Van erre több program, de nem tudom melyik lenne a legjobb, accesben nem szeretném megcsinálni.
Később jó lenne ha bővíthető lehetne.
Nem tudtok valami könnyen kezelhető programot amiben lehet ilyet létrehozni?

Előre is köszi a választ!

mező tartalmának széttagolása "-" karaktererel

Újabb év, újabb egyszerű kérdés, mivel semmivel sem lettem okosabb sql fronton :)

Szeretném egy mező tartalmát széttagolni "-" karaktererrel és egy másik mezőbe tárolni. A left(), right() megvan, de a subsrt() (vagy ennek sql megfelelőjével) gondban vagyok, na meg a feltételek szintaktikájával. A mező tartalma 2 féle lehet, ennek megfelelően két féleképpen kell "-"-el kibővíteni (vagy xxxxx-xxxxx vagy xxxxx-xxxxx-xxxxx formában)

Szóval az alábbi Clipper :D utasítást szeretném sql-ben megkapni (remélem jól emlékszem rá):


replace ujmezo with if( len(alltrim(mezo))>10, left(alltrim(mezo),5)+"-"+substr(alltrim(mezo),6,5)+"-"+right(alltrim(mezo),5),;
                                               left(alltrim(mezo),5)+"-"+right(alltrim(mezo),5) )

Előre is köszönöm.

[megoldva] Oracle 11 deadlock: ORA-02049: timeout: distributed transaction waiting for lock

Oracle 11 deadlock: ORA-02049: timeout: distributed transaction waiting for lock

Eleg surgos segitseg kellene. Sajnos elment szabadsagra a dba es nem adott at semmit nekunk. Annyit ertek sql-hez, hogy elfelejtett jelszo reset, uj db letrehozas, user letrehozas es kb ennyi, linuxos vagyok :( Ezt holnap meg kellene oldanom :(
oracle userkent be tudok jelentkezni linux rendszeren, tehat sql prompt van. Innentol kellene help :(

14:38:51,030 ERROR [xx.busyness.confirm]|10.14.4.24| (ajp-/0.0.0.0:8009-24) Error getting record for update with case reference 3361: java.sql.SQLSyntaxErrorException: ORA-02049: timeout: distributed transaction waiting for lock
14:38:51,050 ERROR [ie.originalsolutions.caseflow.acas.ssbl.ExtendedBaseBackgroundJob]|10.14.4.24| (ajp-/0.0.0.0:8009-24) here again: {className="ie.originalsolutions.caseflow.xx.busyness.CaseCalculationsDAO" methodName="getRecord(line:425)" componentSequenceNumber=0 severity=13 errorType=-1 errorMessage="Error getting record for update with case reference 3361" nestedException.message="ORA-02049: timeout: distributed transaction waiting for lock

Amit kaptam infot regrol:
dba korabban torolte a database lockot es az megoldotta a problemat.

Tovabba ez alapjan: http://orababy.blogspot.co.uk/2013/09/ora-02049-timeout-distributed.html
megneztem a lock timeoutot nalunk is 60.

Gui-ban, ha megnezem milyen lockok vannak, user alatt nincs, system alatt van csomo. A db cluster 3 szerverbol all.

1. Hogy kell megnezni ezt a lockos d olgot es, hogy kell ezt a torlest megcsinalni, mik a parancsok es lepesek ?
2. Ha ujra kellene inditani, hogy kell ezt ? Ha egyenkent rebootolom a node-okat gondolom semmit nem er, mert failoverelni fog a masik kettore, ha nem jol gondolom javitsatok. GUI-ban van egy shutdown gomb, esetleg az lenne ? Vagy, hogy van egy helyes ujrainditas, hogy adatok ne seruljenek ?

Pls help :(

Minden árva adat eldobása (amit nem fog valamilyen idegen kulcs [MySQL])

Sziasztok,
egy olyan problémával szembesültem, hogy van egy néhány millió rekordos DB, amiből visszamenőleg törölni kellene (6 évnyi adatot) lehetőleg az integritás megtartásával. Mivel a DB maga idegen kulcsokkal és megfelelő kapcsolatokkal lett felépítve, így ezekre tudnék támaszkodni.

Nincs beállítva sehol sem cascade delete (szándékosan, az eredeti DB-ből kézlevágás mellett lehetne törölgetni csak), így a törlés az integritás megőrzésével maximum táblánként lehetséges, ami egy elég hosszadalmas folyamat lenne.

Egy táblában van a főadat, ott megfelelően vannak mentve a timestamp-ek, és az ezekhez kapcsolódó rekordokat (amit ez fog) kellene eldobni, illetve azokat amit már nem fog semmi (ugyan a DB így lett felépítve, de előfordulhatnak benne esetlegesen korai inkonzisztens adatok).

Gondoltam olyan joinos megoldásokra, ahol a másik oldal null azokat a sorokat eldobom, de ez enyhén szólva is macerás első nekifutásra (de ez marad, ha nincs más, mert ez is relatíve kevés melóval megoldható).
Kb. 10-15 egymáshoz kapcsolódó táblából törölni kellene a hozzá tartozó dolgokat, így ez egy jópár órás feladat lenne.

A kérdésem: Van-e olyan módszer amivel csak az "árva" adatokat dobjuk el, amit nem fog semmilyen idegen kulcs?

Előre is köszi az ötleteket!

Vertica csomopont session managment

Sziasztok!

Van egy X csomopontbol allo Vertica furtunk Red Hat-on. Nehany napja erdekes esemenyt figyeltunk meg: az egyik csomoponton (x1) a os "load average" erosen megno: felmegy olyan 15-re ( a tobbi csomopontnal ez kb 2) de a CPU hasznalat normalis marad. 32 core van mindegyik box-ban, szoval ez load average nem tunik annyira veszenek, de a DB exceution time egekbe szokik.
Ugye ez disk I/O problemanak tunik.

A megoldast keseve merult fel a kerdes, hogy lehetseges-e Verticaban, hogy egy csomoponton megtiltsuk uj session-ok nyitasat, de hagyuk a mar megnyitottakat rendben befejezni. Ahogy en tudom, ha leallitjuk a DB a box-on akkor az azonal elvagja a sessionokat (1. kerdes: Ez igaz?):
1. idea: valami Vertica parancs ami ezt megoldja. 2. kerdes: Van valami ilyen parancs?
2. idea: az alkalmazasok egy virtualis IP cimen erik el az egesz furtot. Hogy mukodik ez pontosan? 3. kerdes: Az alkalmazasok folyamatosan ezzel a VIP-vel komonikalnak, vagy point-to-point kapocsalat epul ki a box es az alkalmazas kozott (Erre tipelek, de nem vagyok bizots benne)? 4. kerdes: Szoval ha letiltom a VIP a box tuzfalan mi tortenik?

Szertenem tisztan latni mi tortenik pontosan egy session megnyitasatol a bezarasaig, szoval ha valaki az elmeletet is el tudna magyarazni (vagy linkelni egy angol | magyar cikket ami ezt megteszi.).