Oracle - táblákban sorok számolása
Sziasztok!
Van egy adatbázis. Van benne sok tábla, kb. 1,6TB a mérete. Írtam egy SQL scriptet, ami egy kicsit töröl innen-onnan.
A teszteléshez jó lenne látni, hogy mennyi adat volt a törlés előtt, és mennyi utána. Nem egyesével akarom nézegetni a táblákat.A tökéletes az lenne, ha lenne valami view, ami megmondaná, mennyi a sorok száma, szóval valami
S ELECT table_name, num_rows FROM user_tables
lenne az első ötletem.
Csak ez nem jó. Van egy táblám, erre a num_rows 10872-t ad vissza, a s elect count(*) from tabla meg 13477-et. Másik táblánál meg 616 az egyik szám is és a másik szám is. Harmadiknál 462 948 030 a num_rows, 462 915 694 a count(*). Ja, nem menet közben változik, ez egy másolat egy éles rendszerről.
Szóval ebből arra jutottam, hogy a num_rows nem lesz nekem jó.
Arra gondoltam, készítek egy egyszerű sql scriptet, valahogy úgy, hogy:
set escape \
spool myscript.sql
s elect 's elect \', table_name, '\', count(1) from ', table_name, '\;' from user_tables
De úgy látszik, az escape csak a ;-t védi, mert az aposztrófot látja a cucc.
Meg lehet ezt valahogy oldani elegánsan, egyszerűen?
Mert most nincs semmi ötletem, csak az, hogy nekilátok, és megcsinálom pythonnal dinamikus SQL-lel, menet közben összeállítva a query-ket.
G
- Tovább (Oracle - táblákban sorok számolása)
- 2283 megtekintés