gpt4 book ai didi

mysql - 如何使用此 coldfusion 代码读取大型 XML 文件并将数据插入数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 23:19:59 24 4
gpt4 key购买 nike

我正在使用 ColdFusion (openBlueDragon) 将大型 (200MB) xml 文件中的数据插入到数据库中,而无需将整个文件加载到内存中,这是我传统的做法。我确实在这里找到了一个非常相似的问题:Looping over a large XML file这似乎是我正在寻找的答案。

但是,我对 Java 不够熟练,无法理解和调整代码以满足我的需要。我找不到办法回复发布代码的专家(@orangepips),否则我不会发布这样的类似问题。

我的 xml 文件如下所示:

 <allItems>
<item>
<subject>The subject text</subject>
<date>2007-05-21 04:03:00</date>
<content>text content often contains many paragraphs of text</content>
<author>JPass78</author>
</item>
</allItems>

这是代码,由 orangepips 友情提供,我正在尝试根据我的目的进行调整。我对其进行了一些修改以包含我自己的字段名称:

<cfset fis = createObject("java", "java.io.FileInputStream").init(
"#getDirectoryFromPath(getCurrentTemplatePath())#/file.xml")>
<cfset bis = createObject("java", "java.io.BufferedInputStream").init(fis)>
<cfset XMLInputFactory = createObject("java", "javax.xml.stream.XMLInputFactory").newInstance()>
<cfset reader = XMLInputFactory.createXMLStreamReader(bis)>

<cfloop condition="#reader.hasNext()#">
<cfset event = reader.next()>
<cfif event EQ reader.START_ELEMENT>
<cfswitch expression="#reader.getLocalName()#">
<cfcase value="allItems">
<!--- root node, do nothing --->
</cfcase>
<cfcase value="item">
<!--- set values used later on for inserts, selects, updates --->
</cfcase>
<cfcase value="subject">
<!--- some selects and insert --->
</cfcase>
<cfcase value="contentdate">
<!--- insert or update --->
</cfcase>
<cfcase value="content">
</cfcase>
<cfcase value="author">
</cfcase>
</cfswitch>
</cfif>
</cfloop>
<cfset reader.close()>

我有一个表,我想知道如何访问每个 XML 元素的值,以便一次插入一行?像这样:插入内容(主题、内容日期、内容、作者)VALUES("主题文本", 2007-5-21 04:03:00, "文本内容在这里","JPass78");

最佳答案

不要使用 COLDFUSION 将大型 XML 文件导入 MYSQL 数据库,而是使用 MYSQL 命令“LOAD XML INFILE”。

这是对我有用的简单、轻便和快速的代码:

LOAD XML INFILE 'pathtofile/file.xml' INTO TABLE table_name ROWS IDENTIFIED BY '<item>';

我的 xml 文件使用与我的数据库表完全相同的字段名称。 ROWS IDENTIFIED BY 告诉命令我的 xml 文件中的字段名称将对应于我的表中的数据库字段,它们将在 标记之间找到。

仅供引用, 是我自己的命名格式。您的文件可能会有另一个与您正在使用的数据相关的标签名称。例如,如果您的 xml 文件用于员工数据,您可以改为使用

在 MYSQL5.5 中可用 - 可以在以下位置找到 LOAD XML INFILE 的引用: http://dev.mysql.com/doc/refman/5.5/en/load-xml.html

关于mysql - 如何使用此 coldfusion 代码读取大型 XML 文件并将数据插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com