Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sql Parser 
V
    Опции темы
Samotnik
Дата 17.11.2009, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(LSD @  17.11.2009,  12:01 Найти цитируемый пост)
Просто вызови с помощью Runtime.exec() SQL*Plus и передай ему в качестве параметра этот файл. 

тоже думал, но а если нету  SQL plus  на компе  ?

Добавлено через 24 секунды
поэтому и хотелось через jdbc 
PM MAIL   Вверх
Samotnik
Дата 17.11.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



2 LSD 
нашел еще круче утилитку 
с консоли запускается sqlplus  (c:\oracle\product\10.2.0\client_1\BIN\sqlplus.exe )
Если написать батник, то вприницпе проблема решится
НО 
как быть с ошибками ?  smile Что если ошибки будут в этом файле большом. Как можно вернуть текст этой ошибки на консоль ? Если бы вывести на экран строку с ошибкой и описанием, то проблемы ьыла бы решена  smile 
PM MAIL   Вверх
alex_nevolin
Дата 17.11.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 13.8.2007

Репутация: 3
Всего: 4



Цитата(Samotnik @ 17.11.2009,  13:29)
2 LSD 
нашел еще круче утилитку 
с консоли запускается sqlplus  (c:\oracle\product\10.2.0\client_1\BIN\sqlplus.exe )
Если написать батник, то вприницпе проблема решится
НО 
как быть с ошибками ?  smile Что если ошибки будут в этом файле большом. Как можно вернуть текст этой ошибки на консоль ? Если бы вывести на экран строку с ошибкой и описанием, то проблемы ьыла бы решена  smile

По сути это и есть SQL*Plus.
Т.е. на машине стоит Oracle Client. 
Его всегда можно запустить с параметрами для вывода ошибок и всего остального в файл. 
Также провертье есть ли у вас в файле команды коннекта к базе. Они могут быть в скрипте или передаваться праметрами.  Общий вид запуска sqlplus должен выглядеть как-то так:
Код

sqlplus /nolog @script.sql < properties.properties > logs.log

Далее можно считать файл лога logs.log
В любом случае самое сложное тут на мой взгляд определять что уже выполнялось из файла а что нет, иначе будут проблемы при повторном выполнении стейтментов из скрипта.
В целом думаю эту задачу нужно решать именно через Oracle Client a не через jdbc.

Это сообщение отредактировал(а) alex_nevolin - 17.11.2009, 19:30
PM MAIL   Вверх
Samotnik
Дата 18.11.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(LSD @  17.11.2009,  12:01 Найти цитируемый пост)
Просто вызови с помощью Runtime.exec() SQL*Plus и передай ему в качестве параметра этот файл. 

Как это сделать ?
Пытаюсь вот так 
Код

Runtime.getRuntime().exec( new String[] {"cmd", "cd c:/oracle/product/10.2.0/client_1/BIN",
                                                     "sqlplus login/[email protected]/testGO", "c:/DBUpd.sql"});

и ничего не происходит. Вообще. Ошибок нет, эксепшенов тоже нет, и результата тоже нет. 
 smile 

PM MAIL   Вверх
Samotnik
Дата 18.11.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



от так пишет ошибко
Код

Runtime.getRuntime().exec( new String[] {"sqlplus login/[email protected]/testGO", "c:\\DBUpd.sql"});            

Цитата

- java.io.IOException: Cannot run program "sqlplus login/[email protected]/testGO": CreateProcess error=2, The system cannot find the file specified
java.io.IOException: Cannot run program "sqlplus login/[email protected]/testGO": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:466)
    at de.alfa.openMedia.adSuite.utils.JDBCUtil.main(JDBCUtil.java:316)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
    at java.lang.ProcessImpl.start(ProcessImpl.java:30)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
    ... 3 more



Добавлено через 44 секунды
Хотя с командной строки 
от таким методом запускается без проблем
Код

sqlplus login/[email protected]/testGO

PM MAIL   Вверх
Samotnik
Дата 18.11.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



решено
Код

    public static void main(String argv[]) {
    try {
      String line;
      Process p = Runtime.getRuntime().exec
        (new String[] {"sqlplus", "sqlplus login/[email protected]/testGO", "@c:/DBUpd.sql"});
      BufferedReader input =
        new BufferedReader
          (new InputStreamReader(p.getInputStream()));
      while ((line = input.readLine()) != null) {
        System.out.println(line);
      }
      input.close();
    }
    catch (Exception err) {
      err.printStackTrace();
    }
  }

от так заработало smile  
PM MAIL   Вверх
aleksandy
Дата 19.11.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



Цитата
...Есть БД, есть большой проект. 
Но каждый день, кому-то нужны маленькие изменения, где-то таблицу подправить, где-то поле отредактировать. И каждый пишет скриптики...

Мы в проекте для таких целей используем вот это
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0830 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.