-- Das Bankleitzahlen-Verzeichnis der FinTS-Institute. -- -- Die Liste kommt als CSV von der Deutschen Kreditwirtschaft -- (https://www.hbci-zka.de/) und nennt zu jeder Bankleitzahl unter anderem den -- PIN/TAN-Zugangspunkt. Genau der fehlt beim Anlegen einer Bankverbindung am -- häufigsten – die Banken verstecken ihn tief in ihrer Hilfe. -- -- Reine Nachschlagedaten: keine benutzer_id, kein Fremdschlüssel, keine -- Verweise aus anderen Tabellen. Ein Import ersetzt den gesamten Bestand, statt -- ihn zu ergänzen – sonst blieben Institute stehen, die es nicht mehr gibt. -- -- Die Spalten für die Chipkartenverfahren (DDV, RDH-1…10, RAH-7/9/10) der Datei -- werden nicht übernommen: Der Finanzmanager spricht ausschließlich PIN/TAN. CREATE TABLE IF NOT EXISTS bankinstitute ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, -- Die laufende Nummer der Datei. Sie ist nicht stabil zwischen zwei -- Ausgaben, taugt aber als Reihenfolge innerhalb einer. nr INT UNSIGNED NOT NULL DEFAULT 0, blz VARCHAR(16) NOT NULL, bic VARCHAR(16) NOT NULL DEFAULT '', institut VARCHAR(191) NOT NULL DEFAULT '', ort VARCHAR(128) NOT NULL DEFAULT '', rechenzentrum VARCHAR(128) NOT NULL DEFAULT '', organisation VARCHAR(64) NOT NULL DEFAULT '', -- Der HBCI-Zugang über DNS-Namen; für PIN/TAN belanglos, aber er verrät bei -- einer Fehlersuche, welches Rechenzentrum tatsächlich antwortet. hbci_adresse VARCHAR(191) NOT NULL DEFAULT '', hbci_version VARCHAR(16) NOT NULL DEFAULT '', pintan_url VARCHAR(255) NOT NULL DEFAULT '', pintan_version VARCHAR(32) NOT NULL DEFAULT '', -- „Datum letzte Änderung“ der Zeile, nicht der Datei: Manche Einträge sind -- über zehn Jahre alt und entsprechend mit Vorsicht zu genießen. stand DATE NULL, PRIMARY KEY (id), -- Eine Bankleitzahl steht oft mehrfach in der Datei, einmal je Filiale, mit -- identischem Zugangspunkt. Deshalb ein gewöhnlicher Index, kein UNIQUE. KEY idx_bankinstitut_blz (blz), KEY idx_bankinstitut_bic (bic), KEY idx_bankinstitut_institut (institut) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Wann welche Datei eingelesen wurde. Steht bewusst nicht im Einstellungsdialog: -- Beides schreibt der Import, von Hand gibt es daran nichts einzustellen. INSERT INTO einstellungen (schluessel, wert, bereich) VALUES ('bankinstitute_datei', '', 'banking'), ('bankinstitute_import_am', '', 'banking') ON DUPLICATE KEY UPDATE schluessel = schluessel;