Google weiß alles: load data infile + Tabelle erstellen, wenn sie nicht existiert

Beitrag lesen

Gibt es hier evtl. ein Befehl, der die DB Tabelle automatisch erstellt, wenn sie nicht vorhanden ist?

Aber ja. Im Prinzip ist es exakt der gleiche Weg wie bei jeder anderen SQL-Anweisung. Es wird ein String erzeugt, der eine SQL-Anweisung enthält und dieser String wird von PHP an MySQL übergeben, von der Datenbank ausgeführt und PHP wertet dann die Rückgaben aus.

create teable if not exists ist, was Du brauchst.

Anfänger können die Tabelle z.B. mit phpMyAdmin erstellen und dann die Tabelle ohne Daten exportieren. Sogar das "if not exists" kann man dabei voreinstellen.

Alternativ-Text

Das liefert einen Text welcher eben jener String ist, den PHP an den Datenbankserver schicken soll:

Alternativ-Text

Daraus wird dann mit Copy und Paste ganz einfach

$sql = 'CREATE TABLE IF NOT EXISTS `geodb_coordinates` (
  `loc_id` int(11) NOT NULL,
  `coord_type` int(11) NOT NULL,
  `lat` double DEFAULT NULL,
  `lon` double DEFAULT NULL,
  `coord_subtype` int(11) DEFAULT NULL,
  `valid_since` date DEFAULT NULL,
  `date_type_since` int(11) DEFAULT NULL,
  `valid_until` date NOT NULL,
  `date_type_until` int(11) NOT NULL,
  KEY `coord_loc_id_idx` (`loc_id`),
  KEY `coord_lon_idx` (`lon`),
  KEY `coord_lat_idx` (`lat`),
  KEY `coord_type_idx` (`coord_type`),
  KEY `coord_stype_idx` (`coord_subtype`),
  KEY `coord_since_idx` (`valid_since`),
  KEY `coord_until_idx` (`valid_until`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;';

gemacht - und fertig!

Natürlich kann man den Befehl auch ändern oder selbst entwerfen. Die weitere Verarbeitung, insbesondere die Fehlerprüfung erfolgt dann im Prinzip so wie bei einem INSERT, UPDATE oder DELETE. Es werden ja keinen Ergebnis-Zeilen, dafür aber Status- bzw. Fehlermeldungen zurückgeliefert.

Noch etwas: Anfänger verrennen sich sehr oft, weil die im Web natürlich massenhaft veraltete Literatur finden. Wie baust Du die Verbindung zur Datenbank auf? Mit Rücksicht auf PHP7 solltest Du PDO oder mysqli verwenden. Älteres Zeug wird in PHP7 nicht mehr gehen!