65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
import mysql.connector
|
|
|
|
|
|
def parse_a_vety_bulk():
|
|
db_config = {
|
|
'host': '192.168.1.76',
|
|
'port': 3307,
|
|
'user': 'root',
|
|
'password': 'Vlado9674+',
|
|
'database': 'ordinace'
|
|
}
|
|
|
|
conn = mysql.connector.connect(**db_config)
|
|
cursor = conn.cursor(dictionary=True)
|
|
|
|
# 1. Načtení všech 'A' vět z archivu
|
|
print("Načítám věty typu A z databáze...")
|
|
cursor.execute("SELECT id_davky, obsah_radku FROM vety WHERE typ_vety = 'A'")
|
|
raw_records = cursor.fetchall()
|
|
|
|
if not raw_records:
|
|
print("Nenalezeny žádné věty typu A ke zpracování.")
|
|
return
|
|
|
|
# 2. Příprava seznamu dat pro hromadný insert
|
|
data_to_insert = []
|
|
|
|
for row in raw_records:
|
|
s = row['obsah_radku']
|
|
|
|
# Extrakce polí podle tvé specifikace (pozice + délka)
|
|
# Slicing v Pythonu: s[start : start + delka]
|
|
tuple_data = (
|
|
row['id_davky'], # id_davky
|
|
s[13:16].strip(), # HCPO (Pojišťovna)
|
|
s[17:25].strip(), # HICO (IČP)
|
|
s[31:34].strip(), # HODB (Odbornost)
|
|
s[1:8].strip(), # HCID (Číslo dokladu)
|
|
s[34:44].strip(), # HROD (Číslo pojištěnce / RČ)
|
|
s[44:49].strip() # HZDG (Diagnóza)
|
|
)
|
|
data_to_insert.append(tuple_data)
|
|
|
|
# 3. Hromadné vložení (Insert Many)
|
|
sql = """
|
|
INSERT INTO doklady
|
|
(id_davky, pojistovna, icp, odbornost, cislo_poradove, rodne_cislo, diagnoza)
|
|
VALUES (%s, %s, %s, %s, %s, %s, %s)
|
|
"""
|
|
|
|
try:
|
|
print(f"Vkládám {len(data_to_insert)} záznamů do tabulky doklady...")
|
|
cursor.executemany(sql, data_to_insert)
|
|
conn.commit()
|
|
print("Hromadný import dokladů byl úspěšně dokončen.")
|
|
except mysql.connector.Error as err:
|
|
print(f"Chyba při hromadném vkládání: {err}")
|
|
conn.rollback()
|
|
finally:
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parse_a_vety_bulk() |