Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: ntrance в Mar 08, 2011, 13:57



Титла: Оръкал скрипт за търкане от база
Публикувано от: ntrance в Mar 08, 2011, 13:57
Здравейте ,
Да ви питам някой може знае ли как да направим един скрипт  за оракъл. Да кажем че имам юсер  ntrance  с парола ntrance   влизам с тях  в Shema(ntrance) така и вътре има  100 таблици някъде с много записи. Та въпроса са ми е как да затрия записи по стари  примерно от 10 дни.
Благодаря предварително.


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: romeo_ninov в Mar 08, 2011, 14:20
Здравейте ,
Да ви питам някой може знае ли как да направим един скрипт  за оракъл. Да кажем че имам юсер  ntrance  с парола ntrance   влизам с тях  в Shema(ntrance) така и вътре има  100 таблици някъде с много записи. Та въпроса са ми е как да затрия записи по стари  примерно от 10 дни.
Благодаря предварително.
А да се намира някаква колона с дата(таймстамп) на инсерт/ъпдейт?


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: ntrance в Mar 08, 2011, 14:27
Да  има си дата , час , година , ъпдейт ,инсърт и тн


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: nforcer2 в Mar 08, 2011, 17:18
Нещо такова
Код:
DELETE  FROM TABLE_NAME WHERE CREATED_DATE < SYSDATE-10


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: romeo_ninov в Mar 08, 2011, 18:34
Нещо такова
Код:
DELETE  FROM TABLE_NAME WHERE CREATED_DATE < SYSDATE-10
нищо такова!!!
Код:
SQL>  select count(*) from SCI_USERS WHERE CREATED_DATE < SYSDATE-1;
 select count(*) from SCI_USERS WHERE CREATED_DATE < SYSDATE-1
                                      *
ERROR at line 1:
ORA-00904: "CREATED_DATE": invalid identifier
това е вярно само ако имаш колона с такова име и формата е date. Но имам спомени че на 11 препоръчват да се ползва timestamp


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: spec1 в Mar 08, 2011, 22:47
1. С коя версия си ?
Влизайки от конзолата , sqlplus ...  ти дава достатъчно информация
за версията на базата.
2. За всяка таблица,можеш да видиш какви полета има с:
 desc <table_name>;
И съотв. триеш данните,както са те посъветвали колегите по-горе


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: ntrance в Mar 08, 2011, 23:02
1. С коя версия си ?
Влизайки от конзолата , sqlplus ...  ти дава достатъчно информация
за версията на базата.
2. За всяка таблица,можеш да видиш какви полета има с:
 desc <table_name>;
И съотв. триеш данните,както са те посъветвали колегите по-горе

(envy)  . Ако имаш решение кажи го неми казвай какво  каде има. Ако знам къде да го намеря и как да го направя няма да поствам пост тука .  Версия 10г     отностно  sqlplus   сигурно има възможности , но не ги знам. Относно полетата знам ги и ги виждам  по горе това което те са казали не върши работа.

И както казах неискам само от една таблица искам от цялата база да търка.


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: spec1 в Mar 08, 2011, 23:42
  Ами най-добре се поразрови в интернет да видиш как се прави.
 Имаш голям брой таблици,предполага се че имат различни полета,
с различни типове данни и т.н.
  Трябва да си напишеш напр. PL/SQL скрипт който да обхожда всички таблици  и да трие (delete from ... where ...) съотв. записи ...
  Можеш да видиш напр. таблиците в твоята схема с:
select * from tab;
 Не може да ти се даде ей така просто и универсално решение.


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: romeo_ninov в Mar 09, 2011, 00:43
Да  има си дата , час , година , ъпдейт ,инсърт и тн
къде са записани тези данни, в какъв форма, как са свързани таблиците?
.
  Можеш да видиш напр. таблиците в твоята схема с:
select * from tab;
...
Хубаво си чувал че има и такова нещо като PL/SQL
и таблиците се виждат така:
Код:
select table_name from user_tables;
iли
Код:
select table_name from all_tables where owner = 'imeto na potrebitelia';


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: ntrance в Mar 09, 2011, 11:42
Мерси  оправих се :) благодаря за  насочването


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: romeo_ninov в Mar 09, 2011, 14:09
Мерси  оправих се :) благодаря за  насочването
не искаш ли да споделиш малко детайли?


Титла: Re: Оръкал скрипт за търкане от база
Публикувано от: ntrance в Mar 31, 2011, 21:30
Чак сега го виждам ми защо не ;) Той стана цял скрипт.

Код
GeSHi (Bash):
  1. #!/bin/sh
  2.  
  3. verbose="y"
  4. debug=""
  5. error=0
  6. script_dir=`dirname $0`
  7.  
  8. opt=""
  9. while test "X$1" != "X" ; do
  10.    case "X$1" in
  11.        X-v) verbose="y" ; shift ;;
  12.        X-q) verbose="" ; shift ;;
  13.        X-debug) debug="y" ; shift ;;
  14.        X-a) adminticket="y" ; shift ;;
  15.        X-*) echo "Unknown option $1" ; error=1 ; shift ;;
  16.        X*) break ;;
  17.    esac
  18. done
  19.  
  20. if test "X$1" = "X" ; then
  21.    error=1
  22. else
  23.    adminuser="$1"
  24.    shift
  25. fi
  26.  
  27.  
  28. if test "X$1" = "X" ; then
  29.    error=1
  30. else
  31.    fechaLimite="$1"
  32.    shift
  33. fi
  34.  
  35.  
  36. if test "X$adminuser" = "X" -o $error = 1 ; then
  37.    echo "Uso: $0 [-v|-q] [-debug] [-a]  user <FechaLimite>"
  38.  
  39.    exit 1
  40. fi
  41.  
  42.  
  43. if  echo "whenever sqlerror exit failure";
  44. echo "DELETE FROM table-name  WHERE table <to_date('"$fechaLimite"','YYYY-MM-DD HH24:MI:SS');" | sqlplus -S $adminuser ;
  45.  
  46.  
  47. then
  48.    echo "DONE"
  49. else
  50.   echo "FAILED"
  51.   exit 1
  52. fi
  53.  
Стартира се така ;) 
Код
GeSHi (Bash):
  1. ./scriptname.sh     user/user@sid-name      "2011-02-24"

Така ще затрие  всичко по старо от 2011-02-24