08-01-2023, 11:27
Ich habe mich gefragt, ob es möglich ist, dass man einen XML-Dump (anstelle SQL-Dump) macht und diesen dann in MySQL wieder einfügen kann. Das geht!
Es gibt zwei Varianten, die ich ausprobiert habe:
Wenn die bestehende Tabelle gelöscht werden soll, dann muss in der xml-Datei folgendes enthalten sein:
Wenn die Daten zusätzlich in eine bestehende Tabelle erfasst werden sollen, dann muss der Part mit dem Lösch- bzw. Create-Befehl vorher herausgenommen werden:
Bei dieser Variante muss man die ID, die ein Autowert ist, natürlich durchgängig halten.
Es gibt zwei Varianten, die ich ausprobiert habe:
- Bestehende Tabelle löschen und alles neu erfassen
- Daten an bestehende Tabelle anfügen (ID muss durchgängig sein)
Wenn die bestehende Tabelle gelöscht werden soll, dann muss in der xml-Datei folgendes enthalten sein:
Code:
<?xml version="1.0" encoding="utf-8"?>
<pma_xml_export version="1.0" xmlns:pma="https://www.phpmyadmin.net/some_doc_url/">
<!--
- Structure schemas
-->
<pma:structure_schemas>
<pma:database name="testdb" collation="utf8_general_ci" charset="utf8">
<pma:table name="jagd_transfersum">
DROP TABLE IF EXISTS `jagd_transfersum`;
</pma:table>
<pma:table name="jagd_transfersum">
CREATE TABLE `jagd_transfersum` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_vorgang` int(11) DEFAULT NULL,
`betrag` float DEFAULT NULL,
`waehrung` char(10) DEFAULT NULL,
`erfassung` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2891 DEFAULT CHARSET=utf8;
</pma:table>
</pma:database>
</pma:structure_schemas>
<!--
- Datenbank: 'testdb'
-->
<database name="testdb">
<!-- Tabelle jagd_transfersum -->
<table name="jagd_transfersum">
<column name="id">1</column>
<column name="id_vorgang">2163</column>
<column name="betrag">3800000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 20:02:30</column>
</table>
Wenn die Daten zusätzlich in eine bestehende Tabelle erfasst werden sollen, dann muss der Part mit dem Lösch- bzw. Create-Befehl vorher herausgenommen werden:
Code:
<?xml version="1.0" encoding="utf-8"?>
<pma_xml_export version="1.0" xmlns:pma="https://www.phpmyadmin.net/some_doc_url/">
<!--
- Datenbank: 'testdb'
-->
<database name="testdb">
<!-- Tabelle jagd_transfersum -->
<table name="jagd_transfersum">
<column name="id">1</column>
<column name="id_vorgang">2163</column>
<column name="betrag">3800000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 20:02:30</column>
</table>
<table name="jagd_transfersum">
<column name="id">2</column>
<column name="id_vorgang">2433</column>
<column name="betrag">7500000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 22:29:48</column>
</table>
<table name="jagd_transfersum">
<column name="id">3</column>
<column name="id_vorgang">1474</column>
<column name="betrag">7500000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-09 09:43:14</column>
</table>
Bei dieser Variante muss man die ID, die ein Autowert ist, natürlich durchgängig halten.