是否可以从Oracle中返回一行作为DML(插入,更新)?

时间:2011-05-26 19:08:46

标签: sql oracle plsql

我正在尝试从表中的行生成插入语句?

如果行是[1,“myfirstname”,“mylastname”]有一种获取查询的方法:

“插入表sometable(uid,FirstName,LastName)值(1,”myfirstname“, “mylastname”)

...不使用动态sql?

由于

编辑:

当然,我对此很懒,并且试图不使用动态sql / all_tab_columns。 我希望有一些神奇的函数调用返回一行的DML语句,就像有一种方法来获取对象的DDL表达式一样:

从双重选择dbms_metadata.get_ddl('TABLE','TABLENAME')...但是DML是一行......我觉得这太过分了。

6 个答案:

答案 0 :(得分:1)

我认为你需要这个

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

再看this

答案 1 :(得分:1)

试试这个:

从表a中选择'insert into tablename(fieldname)values('''+ a.fieldname +''')'

根据需要格式化每个字段值。

答案 2 :(得分:0)

您希望将“原始”数据转换为SQL插入语句。

使用SQL无法做到这一点,但通常GUI客户端具有此类功能

答案 3 :(得分:0)

假设您的字符串格式或多或少是静态的,您可能想要使用此示例:

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
      )
  ) ;

答案 4 :(得分:0)

从Oracle网站下载SQLDeveloper(它是免费的)。 登录到您的数据库模式,从表的列表中,右键单击要从中获取数据的表,选择“导出...”,然后按照向导步骤选择“插入”格式的数据。它将为您创建表中数据的insert语句文件。 您可以通过在向导的一个步骤中提供where子句条件来将其限制为仅仅行的子集。

答案 5 :(得分:0)

是的,您可以在Oracle Sqldeveloper中执行此操作。 正如CMG在帖子中所说的那样容易。 只需右键单击要获取数据的表 - >导出 - > INSERT - >指定保存脚本的文件路径 - > bingo:)