oracle查询转insert语句,oracle中将查出来的数据转化为insert into语句

前言:

最近造数据,迁移至不同测试环境。由于没有建立dblink的权限,所以想将查询出的语句直接转化成insert into语句。

步骤一:

将查询语句输出形式经行修改:

例如:

SELECT 'Insert into emp1 (DEPTNO,COMM,SAL,HIREDATE,MGR,JOB,ENAME,EMPNO) ' ||

'Values(' || '''' || DEPTNO || '''' || ',''' || COMM || '''' ||

',''' || SAL || '''' || ',''' || HIREDATE || '''' || ',''' || MGR || '''' ||

',''' || JOB || '''' || ',''' || ENAME || '''' || ',''' || EMPNO || '''' || ');'

FROM EMP1;

查询效果如下:

0818b9ca8b590ca3270a3433284dd417.png

主要:分成几部分

Select 'Insert into floating_population_lease_info (

) ' || 'Values('||''''||

||''''|| ',''' ||

|| ''''||');'

步骤二:

将查询出来的语句进行保存:

本来想使用dbms_file的但是依然是没有权限,所以使用了spool命令(保存命令窗口中的日志)算是一种曲线救国的方式吧!

格式类似于:

set trimspool on

set linesize 120

set pagesize 2000

set newpage 1

set heading off

set term off

spool 路径+文件名

select col1||','||col2||','||col3||','||col4||'..' from tablename;

spool off

其中涉及到输出格式的设置

spool详情参阅:

备注:

1.脚本一定要在命令窗口下执行

2.在命令串口下执行,在每个表结束时会产生"**** rows selected"的语句,此句话会影响下一步在插入数据。所以在开头设置打印格式时添加

feedback off命令,来取消。

3.后来将其写成java程序,用到jdbc相关技术

详情:

要实现这个需求,需要先了解一下 ACCESS 中的 VBA 编程语言和 Oracle 数据库的连接方式。 1. 连接 Oracle 数据库 在 VBA 中连接 Oracle 数据库,需要使用 ADODB(ActiveX Data Objects)对象。代码如下: ``` Dim conn As New ADODB.Connection conn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=myOracleDB;User ID=myUsername;Password=myPassword;" conn.Open ``` 其中,`myOracleDB` 是 Oracle 数据库的名称,`myUsername` 和 `myPassword` 分别是连接数据库的用户名和密码。 2. 查询 ACCESS 数据库中的数据 在 VBA 中查询 ACCESS 数据库中的数据,可以使用 ADO(ActiveX Data Objects)对象。代码如下: ``` Dim rs As New ADODB.Recordset rs.Open "SELECT * FROM myTable", conn ``` 其中,`myTable` 是 ACCESS 数据库中的表名。 3. 导入数据Oracle 数据库中 在 VBA 中将查询出来的数据导入到 Oracle 数据库中,可以使用 SQL 语句。代码如下: ``` Dim sql As String sql = "INSERT INTO myOracleTable VALUES (value1, value2, ...)" conn.Execute sql ``` 其中,`myOracleTable` 是 Oracle 数据库中的表名,`value1`、`value2` 等是要插入的数据值。 综合起来,可以编写如下的 VBA 代码实现按钮点击事件查询数据后导入到连接的 Oracle 数据库表中: ``` Private Sub btnImport_Click() ' 连接 Oracle 数据库 Dim conn As New ADODB.Connection conn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=myOracleDB;User ID=myUsername;Password=myPassword;" conn.Open ' 查询 ACCESS 数据库中的数据 Dim rs As New ADODB.Recordset rs.Open "SELECT * FROM myTable", conn ' 将数据导入到 Oracle 数据库中 Do Until rs.EOF Dim sql As String sql = "INSERT INTO myOracleTable VALUES (" & rs.Fields("Field1").Value & ", " & rs.Fields("Field2").Value & ", ...)" conn.Execute sql rs.MoveNext Loop MsgBox "数据导入功!" End Sub ``` 其中,`Field1`、`Field2` 等是 ACCESS 数据库中的字段名,`...` 表示还有其他字段需要导入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值