Ich verwende die folgende Anweisung in einem mySQL-Workbench query:mysql Last xml Anweisung erzeugt 0 Datensätze
LOAD XML INFILE 'ProductFile.xml' INTO TABLE myDB.products
ROWS IDENTIFIED BY '<product>';
, die das folgende Protokoll erzeugt:
19:15:52 LOAD XML INFILE 'ProductFile.xml' INTO TABLE ROWS myDB.products identified by '' 0 Zeile (n) betroffene Datensätze: 0 Deleted: 0 Skipped: 0 Warnungen: 0 0.000 sec
ProductFile.xml Daten enthält, im folgenden Format:
<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
<product>
<name>Thing 1</name>
<productUrl>http://www.productsite.com/linkofsomesorttothing1</productUrl>
<ProductId>1234567890</ProductId>
</product>
<product>
<name>Thing 2</name>
<productUrl>http://www.productsite.com/linkofsomesorttothing2</productUrl>
<ProductId>1234567891</ProductId>
</product>
</products>
myDB.products ist wie folgt:
CREATE TABLE IF NOT EXISTS `myDB`.`Products` (
`ProductId` INT UNSIGNED NOT NULL,
`name` VARCHAR(70) NOT NULL,
`productUrl` TEXT NULL,
PRIMARY KEY (`ProductId`),
UNIQUE INDEX `ProductId_UNIQUE` (`ProductId` ASC)
) ENGINE=InnoDB COMMENT='\n';
Kann mir jemand sagen, warum es keine Ausgabe produzieren?
Update: Es scheint ein Problem mit den tatsächlichen Daten, die ich zwischen den Start- und End-Tags habe (die oben genannten Daten sind Beispieldaten, die ich für die tatsächlichen Daten ersetzt). Ich poste ein Update, sobald ich die tatsächlichen Daten isoliert habe, die das Problem verursachen. Es ist ein bisschen merkwürdig, da es dort nichts gibt, was wie HTML-Tags aussieht, also überbietet es mich, warum der Parser verwirrt wird ... –
Ich habe ein Problem gefunden, das aus dem Zeichensatz zu stammen scheint. Ich denke, ich muss den Zeichensatz angeben, der ISO-8859-1 auf der Anweisung LOAD entspricht ... latin1? –
Das Problem kam tatsächlich aus dem Zeichensatz. Ich musste den Zeichensatz angeben, der ISO-8859-1 in der Anweisung LOAD entspricht, z. B. CHARACTER SET latin1. Jetzt funktioniert es! –