Adatbázis: SQL, XML DB

Adatbázis-kezelés kezdőknek - PostgreSQL tanfolyam?

Szervusztok!

Tudtok nekem olyan, kezdőnek szóló képzést, ami PostgreSQL-ben utazik, esetleg létezik ez ügyben aktuális magyar nyelvű könyv, mint pl. a php-vel kapcsolatban sok ilyet láttam? Vagy olvassam el inkább a manuált? - Magyar nyelven nem nagyon hasít a gyik gyártás ezen a téren, tudom, tanuljakvilágnyelvet. - Alapvetően az adatbázis-kezelés alapjai, fogalmai érdekelnek, ennek az adatbázis-kezelőnek a kapcsán. :) Vagy az minden kezelőnél ugyanaz. Szeretném megtakarítani, az „ennél az adatbázisban kicsit másként van” fél napig tartó megoldáskereső köröket.

Igazán a kérdést sem sikerült normálisan feltennem.

Köszönöm előre is, ha adtok ötleteket.

Flux fuggvenyek

Szeretnek COP-t szamolni InfluxDB-ben. Az adatok bent vannak MQTT-bol, viszont nem tudom az alabbi muveletet lekepezni veluk mert allandoan valami hiba van benne:

4.18 * Ch1/65.0/60.0 * (T1-T2) / (W1 + W2 + W3)

Ez alapjan probaltam: https://www.influxdata.com/blog/influxdb-how-to-do-joins-math-across-me…

De nem megy :/ Google nem nagyon segitett. Lehet a W1+W2+W3-at is rosszul csinalom, de a legalso join-ra kiirja hogy float is not Record (argument tables) es beledoglik

flow = from(bucket: "sensors")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["topic"] == "egyikeszkoz/Ch1")
  |> drop(columns:["_start", "_stop", "_measurement", "position", "_field"])

T1 = from(bucket: "sensors")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["topic"] == "egyikeszkoz/T1" )
  |> drop(columns:["_start", "_stop", "_measurement", "position", "_field"])

T2 = from(bucket: "sensors")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["topic"] == "egyikeszkoz/T2" )
  |> drop(columns:["_start", "_stop", "_measurement", "position", "_field"])

T3 = from(bucket: "sensors")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["topic"] == "egyikeszkoz/T3" )
  |> drop(columns:["_start", "_stop", "_measurement", "position", "_field"])

Wall = from(bucket: "sensors")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["topic"] == "masikeszkoz/W1" or r["topic"] == "masikeszkoz/W2" or r["topic"] == "masikeszkoz/W3")
  |> drop(columns:["_start", "_stop", "_measurement", "position", "_field"])

QH = join(tables: {flow, T1, T2, T3, Wall}, on: ["_time"])
  |> map(fn: (r) => (r._value_flow / 65.0 / 60.0 * 4.18 * (r._value_T1 - r._value_T3))/(r._value_Wall))
  |> yield(name: "COP")

Postgresql 10 db helyreállítás

Helló!

 

Azt szeretném megkérdezni, hogy van-e lehetőségem helyreállítani:

 

waiting for server to start....2023-01-24 11:58:24.591 CET [85430] LOG:  listening on IPv6 address "::1", port 5433
2023-01-24 11:58:24.591 CET [85430] LOG:  listening on IPv4 address "127.0.0.1", port 5433
2023-01-24 11:58:24.599 CET [85430] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5433"
2023-01-24 11:58:24.651 CET [85431] LOG:  database system was interrupted while in recovery at 2023-01-24 11:45:14 CET
2023-01-24 11:58:24.651 CET [85431] HINT:  This probably means that some data is corrupted and you will have to use the last backup for recovery.
................2023-01-24 11:58:41.117 CET [85431] LOG:  database system was not properly shut down; automatic recovery in progress
2023-01-24 11:58:41.134 CET [85431] LOG:  redo starts at 10EA/AED7CA08
2023-01-24 11:58:41.139 CET [85431] WARNING:  will not overwrite a used ItemId
2023-01-24 11:58:41.139 CET [85431] CONTEXT:  WAL redo at 10EA/AEF14050 for Heap/HOT_UPDATE: off 27 xmax 1192455519 ; new off 5 xmax 0
2023-01-24 11:58:41.139 CET [85431] PANIC:  failed to add tuple
2023-01-24 11:58:41.139 CET [85431] CONTEXT:  WAL redo at 10EA/AEF14050 for Heap/HOT_UPDATE: off 27 xmax 1192455519 ; new off 5 xmax 0
2023-01-24 11:58:41.300 CET [85430] LOG:  startup process (PID 85431) was terminated by signal 6: Félbeszakítva
2023-01-24 11:58:41.300 CET [85430] LOG:  aborting startup due to startup process failure
2023-01-24 11:58:41.302 CET [85430] LOG:  database system is shut down
 stopped waiting

 

Köszönöm!

Folyamatábra felépítése log alapján

Sziasztok!

 

Tudtok ajánlani olyan eszközt ami megeszik egy logfájlt és ez alapján azonosítja egy folyamat lépéseit illetve a köztük lévő összefüggéseket?

Részmegoldások is érdekelnek. pl. ha valami csak a lépéseket tudja azonosítani.

 

A cél az lenne, hogy egy rendszer logját megetetem vele és ebből felrajzolja, hogy milyen folyamat/folyamatokat hajt végre a rendszer. Lehetőség szerint minél automatikusabb eszköz kellene, tehát ne kelljen neki pl. megmondani, hogy a "Dokumentumfeldolgozás kezdete" szöveget tartalmazó sor az egy lépéshez tartozik, ezt találja ki magától.

 

Köszi!

MariaDB - Authentication Plugin

Sziasztok!

Környezet: Proxmox VE 7 hoston futó Debian 11 konténerben telepített MariaDB 10.5.15

A mariadb-server-10.5 csomag telepítése után, annak rendje és módja szerint futtattam a mariadb-secure-installation (lánykori nevén: mysql_secure_installation) parancsot.

...
Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n]
...

A unix_socket-re vonatkozó kérdés (nekem új volt) Debian 10 estén még nem volt, ezért próbáltam értelmezni az előtte lévő magyarázatot: You already have your root account protected, so you can safely answer 'n'.

Emlékeim szerint már Debian 10 (de talán már Debian 9) esetén is unix_socket volt a MariaDB-ben a root felhasználó hitelesítési mechanizmusa. Erre most azt javasolja, hogy válasszam az 'n'-t, de ennek ellenére 'Y' az alapértelmezett (ezt hogy érti?). De azt választottam, amit javasolt.

Aztán jött a jelszó megváltoztatására vonatkozó kérdés, ugyanazzal a magyarázattal mint a korábbi kérdésnél, szintén egy 'n' javaslattal és 'Y' alapértelmezett értékkel (na ezt se értettem). Régi berögződés - megváltoztattam / megadtam a root jelszavát.

 

De nem hagyott nyugodni és próbáltam utánajárni, az alábbi oldalakat találtam:

Jól értelmezem:

  1. A "Switch to unix_socket authentication [Y/n]" kérdésre mindegy, hogy mit válaszolok, a unix_socket hitelesítési mechanizmus akkor is adott lesz? (én ezt tapasztaltam)
  2. Ha állítok be jelszót a root felhasználónak, akkor a "Switch to unix_socket authentication [Y/n]" kérdésre adott választól függetlenül jelszóval is fog tudni hitelesíteni a root felhasználó (pl. egy phpMyAdmin felületen)?

A mysql.global_priv és mysql.user táblát és nézetet nézegettem.

A tesztelések előtt a mariadb-server-10.5 "telepítési állapotát" az alábbival próbáltam elérni:

ALTER USER root@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'

3. Ezzel tényleg elértem azt, hogy a root felhasználó hitelesítésre vonatkozó beállításai a "telepítés utáni állapotba" kerültek?

Mysql létrehozás új oszlop és kitöltése automatikusan

A példa kedvéért, van most egy tábla, amiben a következő oszlopok vannak: Sorszám, név, e-mail, password. Ehhez szeretném hozzáadni a "rangsor" nevű oszlopot, amibe a sorszám+15 értéknek kellene belekerülnie. Természetesen a már meglévő sorokat vegye figyelembe a kitöltés és a jövőbeni keletkező sorokat is töltse ki így, hogy figyelembe veszi a "rangsor" nevű oszlopot.

Az INSERT INTO amivel hozzáadhatom az oszlopot?

UPDATE amivel módosíthatom, kitölthetem?

Egy példa sornak örülnék.

HANA szerver kérdés

Hala,

Ha valaki Hanázik (nálam) nagyobb tapasztalattal, kérem segítsen. A közeledő migrálásunk által menekülnénk (nagy verzióugrással) a legújabb cuccra. Új szerver (Dell) és mindegy egyéb rendelkezésre áll, intéztük.

Nomost a jelenlegi szerver (szintén Dell) viszont rendszertelenül köhögni kezdett a hálózati oldalon, a fentebbi műveletet pedig még nem tudjuk meglépni (a nagy verzióugrás a fő nehézség), szóval gyorsban kellene segíteni rajta. Rézről sürgősen át kellene költözni optikára. A gépben ott egy 2xSFP+ kártya, melybe tudok tenni direkt kábelt, amit pedig be tudok húzni a központi routerbe (a szerver oldali SFP a gbic modulokat nagyon válogatja, emiatt 10G modulok és 50/125-ös kábelek nem játszanak, csak a direkt kábel).

Az adatbázisszerver ugyebár figyeli az alatta lévő Linux által kiosztott eszközök neveit, illetve kizárólag a telepítéskor megadott IP-vel hajlandó működni - ami később nem módosítható. Kérdésem: ha kinyírom a most használt RJ45-öket (3db van összedrótozva, szóval mindhármat kinyírom) és az SFP-n adok a gépnek egy olyan címet, amin a 3 "kártya" ült eddig, akkor működni fog a dolog, elérik majd a kliensek? Fontos kérdés, mert éles rendszeren kell doktoráljak. Ha az IP-t visszaírom az elegendő, vagy az eszközazonosító miatt ne is próbáljam?

Köszönöm!

 

SQL Server Management Studio kiegészítő - fejlesztőknek

Sziasztok!

Aki SQL Server-rel dolgozik, milyen extension-t használ SSMS-en belül? 

Nekem tapasztalatom a Redgate SQLPrompt-tal van, illetve a dbForge SqlComplete Express-t használtam. 

A Redgate SQL Prompt elég jó cucc, az SQLComplete-ben nem sikerült elmélyülnöm. 

Az alábbi szempontok érdekesek: licensz díjak, árazás, ár/érték arány, feature set.

Nem csak kód formázás miatt kellene, snippeteket is használnánk. 

MySql invalid adatok keresése

Egy mysql adatbázis költöztetése során kiderült, hogy olyan értékek vannak benne, amik nem lehetnének. Tipikusan ezek enum mezők, amik nem lehetnek NULL értékűek, nem üres értkélistával. Mégis üres string van bennük.

A forrás szerveren - régebbi mysql verzió - gond nélkül fut a program, de már ott is ilyen adatok vannak.

Az új, frissebb verziójú szerveren, az adatok importja közben jelzi, hogy érvénytelen adat, és leáll az import.

Mivel minden ilyen konkrét jelzés eddig csak a fenti típusú hibára jelentkezett, ezért az INSERT parancsokat INSERT IGNORE parancsra cseréltem. Így betöltötte a teljes adatbázist. Meglepetésemre ugyanígy hibás adatokkal. (Azt vártam volna, hogy ezeket átugorja.)

Most tehát van egy szintén a definíciónak nem megfelelő adattartalmú adatbázisom, amin a program ugyan továbbra is gond nélkül fut, de én mégsem vagyok nyugodt. És itt jön a kérdés:

Hogyan tudnám arra kérni a mysql-t, hogy mutassa meg, mely rekordok ütköznek a definícióval?

sqlite lekérdezés

Üdv!
Most nagyon aktuális...

Van egy sqlite - 2019 óta napi rendszerességű adatokkal - gázfogyasztás adatbázisom.
Szeretnék egy/két lekérdezést csinálni, hogy mennyi volt az adott havi (mind...) fogyasztás. Ill. évenkénti is.
Jól olvastam, hogy a GROUP BY-ban nincs havi?
Hogy tudom megcsinálni?
Pl. egy adott évre próbáltam:
select sum(mero),datum from gaz where datum>'2021-12-31' and datum<'2023-01-01'
ráadásul az értékek abszulút (óra mutatott) értékek...

Köszönöm,
Roland