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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> БД и PowerShell 
V
    Опции темы
bigory
Дата 26.11.2022, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

На скрипте PowerShell выполняется некий алгоритм, который получает данные. эти данные мне нужно в этом же скрипте записать в БД Оракл. Вот мои пробы записать пока что статические данные:

Код

$sql="insert into udo_t_broker_consumer (ID, message) values (1,'11111111')";
$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = "SQLPLUS"
$process.StartInfo.Arguments = "user_my/pass123@test"
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.CreateNoWindow = $true
$process.StartInfo.RedirectStandardInput = $true
$process.StartInfo.StandardOutputEncoding = [System.text.Encoding]::GetEncoding("UTF-8")
$process.Start()
Start-Sleep -Seconds 10
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte($sql),0,$sql.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('commit;'),0,'commit;'.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('exit;'),0,'exit;'.Length)
Start-Sleep -Seconds 10
$process.Kill()
$process.WaitForExit()
$var1=@($process.StandardOutput.ReadToEnd())
$var1


Подключение проходит, не получается только отправить значение $sql, 'commit;', 'exit;'.
Ссылка на фото с экрана (ЯндексДиск)
Что я делаю не так?

Это сообщение отредактировал(а) bigory - 26.11.2022, 19:46
PM MAIL   Вверх
Oldshelf
Дата 27.11.2022, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte($sql),0,$sql.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('commit;'),0,'commit;'.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('exit;'),0,'exit;'.Length)


Вроде бы, надо указать точку с запятой в конце выражения или послать слэш отдельной строкой: https://stackoverflow.com/questions/7327991...280111#73280111


Код

$process.StartInfo.UseShellExecute = $false
$process.StartInfo.CreateNoWindow = $true
$process.StartInfo.RedirectStandardInput = $true


А $false и $true где-то определены?
PM MAIL WWW   Вверх
bigory
Дата 27.11.2022, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Oldshelf @ 27.11.2022,  05:08)
Код

$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte($sql),0,$sql.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('commit;'),0,'commit;'.Length)
Start-Sleep -Seconds 2
$process.StartInfo.StandardInput.BaseStream.Write([System.text.Encoding]::GetEncoding("UTF-8").GetByte('exit;'),0,'exit;'.Length)


Вроде бы, надо указать точку с запятой в конце выражения или послать слэш отдельной строкой: https://stackoverflow.com/questions/7327991...280111#73280111

Добрый день. Спасибо, в понедельник попробую. Скорее всего из-за этих слешей и из-за команд, через которые пытаюсь вывести строку. Да, тот код что выслал, это я переписывал со скрина (есть там неточности и ошибки), так как на рабочем месте нет интернета. Правдоподобный код у меня на скрине

Добавлено через 3 минуты и 2 секунды
Цитата(Oldshelf @ 27.11.2022,  05:08)
Код

$process.StartInfo.UseShellExecute = $false
$process.StartInfo.CreateNoWindow = $true
$process.StartInfo.RedirectStandardInput = $true


А $false и $true где-то определены?

$false и $true это стандартные выражения, они по умолчанию определены как булевые
PM MAIL   Вверх
bigory
Дата 28.11.2022, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Oldshelf @  27.11.2022,  05:08 Найти цитируемый пост)
Вроде бы, надо указать точку с запятой в конце выражения или послать слэш отдельной строкой: https://stackoverflow.com/questions/7327991...280111#73280111


Спасибо! Статья то, что надо

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

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

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


 




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


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

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