Как выполнить файл sql из Java - PullRequest
8 голосов
/ 29 ноября 2011

У меня есть ORACLE SQL sctipt с несколькими запросами и таблицами, и я хочу запустить этот скрипт из моей java-программы при запуске программы, чтобы убедиться, что все на своем месте.Я нашел код для запуска скрипта, но по какой-то причине он не работает.Может ли кто-нибудь предоставить мне образцы, чтобы я мог следить за ним.

Вот что я нашел:

try {
    String line;
    Process p = Runtime.getRuntime().exec ("psql -U sas -d oracle -h @localhost -f Lab_05_Tables.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();
}

Но это не сработает.

Ошибка

java.io.IOException: Cannot run program "psql": CreateProcess error=2, The system     
cannot find the file specified

Ответы [ 3 ]

5 голосов
/ 29 ноября 2011

Было бы намного лучше, если бы у вас были ресурсы, переносить SQL из вашего скрипта в саму Java-программу.

См. Руководство по Java JDBC .

2 голосов
/ 29 ноября 2011

Возможно, вы используете EnterpriseDB Postgres Plus Advanced Server, который позволит вам запускать код Oracle с использованием psql.Имя файла «Lab_05_Tables.sql» предлагает образовательную среду, так что извините, если мне кажется, что я неоправданно отношусь к вам как к новичку.

Прежде чем заставить это работать в Java, вы должны запустить выполненный операторсам по себе в командной строке.

psql -U sas -d oracle -h @localhost -f Lab_05_Tables.sql

Здесь многое может быть не так, и вам нужно это выяснить.Ваша командная строка предполагает, что вы ожидаете запустить java-программу на том же сервере, на котором работает сервер базы данных и установлен клиент базы данных, и что вы используете имя пользователя «sas» для входа в базу данных с именем «oracle»"пароль не требуется.Если что-то из этого не правильно, вам следует обратиться за помощью по настройке базы данных, прежде чем приступить к работе с Java-приложением.Я бы пропустил "-h @localhost".

Если вы уверены, что все работает, и масштаб вашей проблемы - просто заставить Java выполнить вашу команду, то вам, возможно, просто нужно добавить psql к вашемуПеременная окружения PATH.

2 голосов
/ 29 ноября 2011

Вы пытаетесь запустить внешнюю программу из своего кода, что не является хорошим решением.

Если вы используете Ant, вы можете использовать задачу sql в Ant: http://ant.apache.org/manual/Tasks/sql.html

Если вы не используете Ant, вы должны просто использовать обычное соединение jdbc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...