几天前I managed it to export 3 different PgSQL tables into one XML file。现在,我想导入相同的文件。我搜索了大约2个小时,但只找到了将XML导入到一个表的解决方案。这里北京时间的XML的结构将XML文件导入PostgreSQL数据库
<?xml version="1.0" encoding="UTF-8"?>
<Table1 Col1="xxx" Col2="xxx">
<Table2 Col1="xxx">
<Table3 Col1="xxx" Col2="xxx" Coln="xxx"/>
</Table2>
<Table2 Col1="xxx"/>
<Table2 Col1="xxx">
<Table3 Col1="xxx" Col2="xxx" Coln="xxx"/>
</Table2>
</Table1>
表1包含表3和表2包含表3
的表是XMLWriterElements,列XMLWriterAttributes。
更新:我解决了这个问题,想向你展示我的结果,如果有人哈相同或相似的问题:
$reader = new XMLReader();
if ($reader->open("tk.xml")) {
while($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT &&reader->name == 'Table 1') {
$knr = $reader->getAttribute('Col1');
$kname = $reader->getAttribute('Col2');
$SQL = "";
$SQL .= "SELECT
(table1).col1 AS col1, (table1).col2 AS col1
FROM
table1
";
$SQL .= "INSERT INTO table1 (";
$SQL .= "col1, col1";
$SQL .= ") VALUES (";
$SQL .= "'".$col1."', '".$col1."'";
$SQL .= ");".PHP_EOL;
echo $SQL;
}
if ($reader->nodeType == XMLReader::ELEMENT
&&reader->name == 'Table 2') { ......}
if ($reader->nodeType == XMLReader::ELEMENT
&&reader->name == 'Table 3') { ......}
}
$reader->close();
}
我希望,茨艾伦代码将帮助别人。
数据库实际上是一个包含行和列的单个平面表。表将大型数据库分解为单个平面表的子集视图。你的XML有嵌套的表,这很难进入数据库。我将创建一个包含Col1,Col2和Coln的表格,然后将数据输入到单个表格中,而不是将数据输入到三个单独的表格(表格1,表格2和表格3)中。 – jdweng
您已经在更新中粘贴了代码,但没有说明您遇到了什么问题,您得到的错误等。快速浏览一下,我可以看到一些问题:您似乎正在使用MySQL样式标识符用''引用',而不是用'''引用ANSI SQL风格。你也可以根据我的明确建议,*在你的SQL中连接值,并且如果你执行SQL *,则会使你开放SQL注入。 –
如果你仍然卡住不管你在编辑时粘贴的代码有什么问题,都请发布一个新的问题,并附上一个链接回到这个问题的上下文,你遇到问题的代码小节,问题的描述,确切的您收到的错误消息等。你可能会发现你在编写问题的过程中自己解决它。 (我不能很好地跟踪你的代码,似乎有很多重复;你粘贴了它的一部分两次,也许?) –