连接XML文件的存储空间不足

时间:2013-12-14 00:42:13

标签: xml ksh informatica

我的任务是将数千个XML文件连接成一个文件。目标是使用Informatica ETL软件加载70,000多个文件更容易加载和维护。

我的XML文件看起来像这样

<insert_list><test_event_insert  endTime="2013-07-18T15:56:28" startTime="2013-07-18T07:35:11" operator="X-CLARKS1">.........</test_event_insert></insert_list>

我需要在数据库中加载“test_event_insert”标记之间的所有数据,因此我创建了一个KSH脚本脚本来获取每个XML文件的标记并将数据连接到一个文件中。这是我的剧本:

#!/bin/ksh

#navigate to XML repository
cd $data

#some files have spaces in their names so it takes care of it here
find . -name '* *' | while read file
do
        target=`echo "$file" | sed 's/ /_/g'`
        echo "Renaming '$file' to '$target'"
        mv "$file" "$target"
done

#create MEGA file header
echo -e '<?xml version="1.0" encoding="UTF-8"?>\n<insert_list>\n'>>$data/OUT.XML

#this is where I parse all my XMLs and create one MEGA file
for i in `find . -maxdepth 1 -name "*XML"`
do
        sed 's:^<insert_list>\(.*\)</insert_list>$:\1:' "$i" ; echo -e "\n"
done>>$data/OUT.XML

#create MEGA file footer
echo -e '</insert_list>'>>$data/OUT.XML

它适用于2,3个文件。当我用30,000个文件测试它时,脚本似乎陷入了循环,我的输出文件超出了我的文件系统(3GB:小型服务器)。

我在这里做错了什么?我不知道我的剧本中的错误在哪里...任何想法?

0 个答案:

没有答案