Nano Hash - криптовалюты, майнинг, программирование

Запуск файла SQL на Java с помощью SqlPlus

Я пытаюсь запустить файл sql на sqlplus с помощью java. Почти все перепробовал в интернете, но так и не нашел никакой подсказки по этой проблеме. Ниже код запускает cmd , подключает sqlplus с моими учетными данными и обрабатывает мой файл, но журналы консоли все еще зависают, не удалось записать созданную таблицу или что-то в этом роде. На стороне БД таблица вообще не создается. Я имитировал cmd вручную, когда я пытаюсь выполнить свои шаги вручную, после команды @pathtoscriptfile мне нужно «/» и нажать Enter для создания таблицы. Я не умею смоделировать на java эту цель.

Любая помощь?

public static void main(String[] args) throws IOException {

           String[] command = {"sqlplus", "username/password@ip:port/servicename", "@C:/Users/erkan.erkisi/Desktop/Jenkins/123.sql"};
            ProcessBuilder probuilder = new ProcessBuilder( command );           

            Process process = probuilder.start();

            //Read out dir output
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            System.out.printf("Output of running %s is:\n",
                    Arrays.toString(command));
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            //Wait to get exit value
            try {
                int exitValue = process.waitFor();
                System.out.println("\n\nExit Value is " + exitValue);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }



}

Мое затмение вышло

Сценарий в том файле, который я пытаюсь сделать (это пример кода, это может быть пакет, процедура или т. д.);

create table xxer_erkan (
id number,
tarih date)
22.02.2018

Ответы:


1

Вы можете вообще не обращаться к sqlplus, включив SQLcl (движок сценариев sql sqldev) в свой код Java и вызвав эти функции. Вот пример. Затем запустите их с помощью:

sqlcl.setStmt(<SCRIPT  HERE>);
sqlcl.run();

Я написал сообщение в блоге об этом здесь:

http://krisrice.io/2016-11-15-sqlcl-as-library-in-existing-programs/

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/XE","klrice","klrice");

//#get a DBUtil but won't actually use it in this example
DBUtil util = DBUtil.getInstance(conn);

//#create sqlcl
ScriptExecutor sqlcl = new ScriptExecutor(conn);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
BufferedOutputStream buf = new BufferedOutputStream(bout);
sqlcl.setOut(buf);

//#setup the context
ScriptRunnerContext ctx = new ScriptRunnerContext();

//#set the context
sqlcl.setScriptRunnerContext(ctx);
ctx.setBaseConnection(conn);

//#change the format
sqlcl.setStmt("@C:/Users/erkan.erkisi/Desktop/Jenkins/123.sql");
sqlcl.run();


String results = bout.toString("UTF8");
System.out.println(results);

введите здесь описание изображения

08.03.2018

2

Я решил проблему с установкой ";" конец скрипта.

create table xxer_erkan (
id number,
tarih date);

Спасибо

22.02.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..