Я пытаюсь опубликовать данные в Cloud Pub Sub.Данные в формате JSON и хранятся в моей локальной папке.Я не использую Cloud Storage и не пытаюсь читать сообщения pubsub напрямую через облачную функцию.Протестировал поток с передачей сообщений вручную, и данные также вставляются в таблицы Bigquery.Единственное место, где я застрял, это как я передам набор данных JSON .txt
file в Cloud PubSub,
Пример данных
{"ID":6,"NAME":"Komal","AGE":22,"ADDRESS":"Assam","SALARY":20000}
Может ли кто-нибудь дать PLSмне подсказку!
Я мог видеть различные варианты использования облачного хранилища и все, здесь я читаю измененные данные из таблицы БД, вставляю эти записи в 1 фиктивную таблицу и преобразовываю данные из этой таблицы в формат JSON изапись в файл .txt
.Отсюда, если я смогу опубликовать данные в pubsub, весь поток будет завершен
Если я передам вручную, как показано ниже, данные будут вставлены
gcloud pubsub themes publish pubsubtopic1 -сообщение
{"ID":6,"NAME":"Komal","AGE":22,"ADDRESS":"Assam","SALARY":20000}
Редактировать 10 АПРЕЛЯ
Как я могу добиться вставки данных из файла .txt в pubsub с помощью пакетного файла.Но когда я вызываю командный файл из процедуры PL SQL (DBMS_SCHEDULER), возникает ошибка «gcloud не распознается как внутренняя или внешняя команда».Но когда я вызываю командный файл из командной строки, данные попадают в паб-саб, а также в таблицу Bigquery. Используемый мной скрипт PFB и код PL SQL.Мы будем благодарны за любую помощь
Пакетный скрипт и код PL PL, используемый для вызова скрипта
@echo off
set file=C:\temp\TEST_EXTRACT.txt
echo %file% >> C:\temp\T1.txt
for /f "tokens=*" %%A in (%file%) do (ECHO %%A >> C:\temp\T2.txt
ECHO cmd.exe /K cd C:\Users\test\AppData\Local\Google\Cloud SDK && gcloud pubsub topics publish pubsubtopic1 --message %%A > C:\temp\T3.txt)
Below mentioned the PL SQL code which is used for calling the batch file
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB(
job_name => 'LOOP_JOB',
job_type => 'EXECUTABLE',
job_action => 'C:\WINDOWS\system32\cmd.exe',
--repeat_interval => 'FREQ=WEEKLY;BYDAY=MON,TUE,WED,THU,FRI; BYHOUR=18;BYMINUTE=0;BYSECOND=0',
--start_date => SYSTIMESTAMP at time zone 'EUROPE/LONDON',
job_class => 'DEFAULT_JOB_CLASS',
comments => 'Job to test call out to batch script on Windows',
auto_drop => FALSE,
number_of_arguments => 3,
enabled => FALSE);
SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name => 'LOOP_JOB', argument_position => 1, argument_value => '/q');
SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name => 'LOOP_JOB', argument_position => 2, argument_value => '/c');
SYS.DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
job_name => 'LOOP_JOB', argument_position => 3, argument_value => 'C:\temp\loop.bat');
SYS.DBMS_SCHEDULER.ENABLE( 'LOOP_JOB' );
END;
/