2011-05-26 62 views
1

我想从表中的一行生成插入语句?是否可以在Oracle中以表格的形式返回DML(插入,更新)?

如果该行被[1 “myfirstname”, “mylastname”]是有越来越像一个查询的一种方法:

“插入到表sometable(UID,名字,姓氏)值(1,” ?myfirstname”, “mylastname”)

...不使用动态SQL

感谢

编辑:

承认唉,我对此很懒惰,并试图不使用动态sql/all_tab_columns。 我希望对一些神奇的函数调用返回一个DML语句行,就像有一种方式来获得对象的DDL表达式:

选择DBMS_METADATA.GET_DDL(“表”,“TABLENAME”)从双重......但是DML排成一行......这太想问我了。

+0

你的意思是你想插入你得到的值从选择? – 2011-05-26 19:19:02

+0

insert into sometable(uid,firstname,lastname)从someOtherTable中选择uid,first,last; – tbone 2011-05-26 19:22:10

回答

0

要打开“原始”数据转换为SQL INSERT语句看看。

没有办法用SQL做到这一点,但通常GUI客户都有这样的功能

+0

互联网似乎在这一点上同意你的观点,我会用动态sql掀起一些丑陋的东西。谢谢 – LoudNPossiblyWrong 2011-05-26 19:58:08

+0

假设他的字符串已知格式 - 你可以做一个解决方法。看看我的答案 – 2011-05-26 22:53:34

1

我认为你需要这个

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

this

+0

是的,但那将需要我输入所有的字段值,这是我想要完成的完全相反。假设你不知道列名或它们的类型。感谢您的尝试。 – LoudNPossiblyWrong 2011-05-26 19:55:58

1

试试这个:

选择“插入表名(字段名)VALUES(”“” +一。字段名+''')'来自表a

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

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

好主意。但是,虽然技术上达到了同样的效果,但我不认为这是LoudNPossiblyWrong所期待的;) – 2011-05-27 15:21:41

0

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

0

是的,你可以在Oracle Sqldeveloper中做到这一点。 CMG在这篇文章中讲述的很简单。 只需右键点击你想要获取数据的表格 - >导出 - >插入 - >指定文件路径来保存脚本 - >宾果:)

相关问题