unix ksh получить результат запроса оракула - PullRequest
1 голос
/ 29 марта 2010

Я работаю над небольшим фрагментом кода ksh для простой задачи. Мне нужно извлечь около 14 миллионов строк из таблицы, а затем сгенерировать XML-файл, используя эту информацию. У меня нет никакой обработки информации, только некоторые "если". Проблема в том, что для записи файла требуется около 30 минут, и это не приемлемо для меня.

Это часть кода:

......
query="select field1||','||field2||' from table1"
ctl_data=`sqlplus -L -s $ORA_CONNECT @$REQUEST`

for variable in  ${ctl_data}
do

var1 = echo ${variable} | awk -F, '{ print $1 }'

var2 = echo ${variable} | awk -F, '{ print $2 }'

            ....... write into the file ......

сделано

Чтобы ускорить процесс, я записываю в файл только 30 строк, поэтому в одну строку добавляется больше материала, поэтому у меня есть только 30 обращений к файлу. Это все еще долго, так что не написание, а просмотр результатов.

У кого-нибудь есть идеи о том, как его улучшить?

Ответы [ 4 ]

2 голосов
/ 29 марта 2010

Вместо того, чтобы перейти от оракула к ksh, вы могли бы сделать все это в оракуле? Вы можете использовать следующее для форматирования вывода в формате xml.

select xmlgen.getxml('select field1,field2 from table1') from dual;
1 голос
/ 29 марта 2010

Вы можете удалить звонки на awk:

saveIFS="$IFS"
IFS=,
array=($variable)
IFS="$saveIFS"
var1=${array[0]} # or just use the array's elements in place of var1 and var2
var2=${array[1]}
1 голос
/ 29 марта 2010

вы можете уменьшить количество звонков в awk, используя только один экземпляр. например,

query="select codtit||','||crsspt||' from table1"
.....
sqlplus -L -s $ORA_CONNECT @$REQUEST | awk -F"," 'BEGIN{
   print "xml headers here..."
}
{
   # generate xml here..
   print "<tag1>variable 1 is "$1"</tag1>"
   print "<tag2>variable 2 is "$2" and so on..</tag2>"
   if ( some condition here is true ){
      print "do something here"
   }
}'  

при необходимости перенаправьте вышеуказанное в новый файл, используя > или >>

0 голосов
/ 29 марта 2010

Я сомневаюсь, что это самый эффективный способ выгрузки данных в файл XML. Вы можете попробовать использовать Groovy для такой задачи. Взгляните на отличную кулинарную книгу по адресу -> http://groovy.codehaus.org/Convert+SQL+Result+To+XML

...