47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""Prozkoumá strukturu tabulky DATA v externí DB - spusť na Windows"""
|
|
import fdb, glob
|
|
|
|
soubory = glob.glob(r'u:\MEDICUS_FILES_*.fdb') + glob.glob(r'u:\MEDICUS_FILES_*.FDB')
|
|
if not soubory:
|
|
soubory = glob.glob(r'u:\externi\MEDICUS_FILES_*.fdb') + glob.glob(r'u:\externi\MEDICUS_FILES_*.FDB')
|
|
|
|
soubor = sorted(soubory)[-1]
|
|
print(f"Soubor: {soubor}\n")
|
|
|
|
conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='masterkey', charset='win1250')
|
|
cur = conn.cursor()
|
|
|
|
# Sloupce tabulky DATA
|
|
print("=== Sloupce tabulky DATA ===")
|
|
cur.execute("""
|
|
SELECT r.RDB$FIELD_NAME, f.RDB$FIELD_TYPE, f.RDB$FIELD_LENGTH, f.RDB$SEGMENT_LENGTH
|
|
FROM RDB$RELATION_FIELDS r
|
|
JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = r.RDB$FIELD_SOURCE
|
|
WHERE r.RDB$RELATION_NAME = 'DATA'
|
|
ORDER BY r.RDB$FIELD_POSITION
|
|
""")
|
|
for row in cur.fetchall():
|
|
typ = {7:'SMALLINT',8:'INTEGER',12:'DATE',13:'TIME',14:'CHAR',16:'INT64',35:'TIMESTAMP',37:'VARCHAR',261:'BLOB'}.get(row[1], str(row[1]))
|
|
print(f" {row[0].strip():30} {typ} len={row[2]}")
|
|
|
|
# Generátory
|
|
print("\n=== Generátory ===")
|
|
cur.execute("SELECT RDB$GENERATOR_NAME, RDB$GENERATOR_ID FROM RDB$GENERATORS WHERE RDB$SYSTEM_FLAG=0")
|
|
for row in cur.fetchall():
|
|
print(f" {row[0].strip()} = {row[1]}")
|
|
|
|
# Počet záznamů a ukázka
|
|
print("\n=== Počet záznamů ===")
|
|
cur.execute("SELECT COUNT(*) FROM DATA")
|
|
print(f" {cur.fetchone()[0]} záznamů")
|
|
|
|
print("\n=== Ukázka 3 záznamů (bez BLOB) ===")
|
|
cur.execute("""
|
|
SELECT ID, OCTET_LENGTH(BODY) as VELIKOST
|
|
FROM DATA ORDER BY ID ROWS 3
|
|
""")
|
|
for row in cur.fetchall():
|
|
print(f" ID={row[0]} BODY={row[1]}B")
|
|
|
|
conn.close()
|