Можно ли вернуть строку из таблицы как DML (вставить, обновить) в Oracle? - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь сгенерировать оператор вставки из строки в таблице?

если строка [1, "myfirstname", "mylastname"], есть способ получить запрос, подобный:

"вставить в таблицу некоторые нестабильные (uid, FirstName, LastName) значения (1," myfirstname ", "Mylastname")

... без использования динамического sql?

Спасибо

EDIT:

по общему признанию, я ленив об этом и пытался не использовать динамический sql / all_tab_columns. Я надеялся на какой-нибудь магический вызов функции, который возвращает инструкцию DML для строки, так же как есть способ получить выражение DDL для объекта:

выберите dbms_metadata.get_ddl ('TABLE', 'TABLENAME') из dual ... но DML для строки ... это слишком много, чтобы спросить, я думаю.

Ответы [ 6 ]

1 голос
/ 26 мая 2011

Попробуйте это:

выберите 'вставить в таблицу (имя поля) значения (' '' + a.fieldname + '' ')' из таблицы a

При необходимости отформатируйте каждое значение поля.

1 голос
/ 26 мая 2011

Я думаю, вам нужно это

   insert into table sometable (uid, FirstName, LastName) SELECT 1 ,'myfirstname', 'mylastname' from othertable where somecondition

Взгляните на это также

0 голосов
/ 26 октября 2012

Да, вы можете сделать это в Oracle Sqldeveloper.Это легко, как сказал CMG в посте.Просто щелкните правой кнопкой мыши таблицу, которую хотите получить, -> Экспорт -> ВСТАВИТЬ -> укажите путь к файлу для сохранения сценариев -> Бинго:)

0 голосов
/ 27 мая 2011

скачать SQLDeveloper с сайта Oracle (это бесплатно). Войдите в схему базы данных и в списке таблиц щелкните правой кнопкой мыши таблицу, из которой вы хотите получить данные, выберите «Экспорт ...» и следуйте инструкциям мастера, выбрав формат «Вставить» для ваших данных. Он создаст вам файл операторов вставки для данных в вашей таблице. Вы можете ограничить его только подмножеством строк, указав в одном шаге условия where-условия.

0 голосов
/ 27 мая 2011

Предполагая, что формат строки более или менее статичен, вы можете поиграть с этим примером:

INSERT
   INTO
  someTable
  (
     SELECT
      regexp_substr(expr, '[0-9]+') val1   ,
      regexp_substr(expr, '[a-zA-Z]+') val2,
      regexp_substr(expr, '[a-zA-Z]+', 1, 2) val3
       FROM
      (
         SELECT
          '[1 , "myfirstname", "mylastname"]' expr
           FROM
          dual
      )
  ) ;
0 голосов
/ 26 мая 2011

Вы хотите превратить «сырые» данные в оператор вставки SQL.

Нет никакого способа сделать это с SQL, но обычно клиенты с графическим интерфейсом имеют такую ​​функцию

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