精华内容
下载资源
问答
  • 现在需要在插入一张表的时候,清空该表,但由于是pg的数据同步到oracle的,中间是用perl来做的etl,感觉好像不能触发,比如:pg有10条记录,这个时候同步可以将10条全部...
  • Oracle 清空表分区

    2018-01-26 23:11:16
    ETL重刷201709数据,为了加快插入速度,不与已有数据比较,需要直接清空表指定分区的月份数据: ALTER TABLE TF_FIN_CUX_DOC_SRE TRUNCATE PARTITION BALANCE_DT_201709; 接着需要重建索引,不然会报错ORA-...

    ETL重刷201709数据,为了加快插入速度,不与已有数据比较,需要直接清空表指定分区的月份数据:

    ALTER TABLE TF_FIN_CUX_DOC_SRE
    	TRUNCATE PARTITION BALANCE_DT_201709;
    接着需要重建索引,不然会报错 ORA-01502:

    ALTER INDEX BIDW.INX_FIN_CUX_DOC_SRE_U1 REBUILD;

    如果数据量大,重建索引耗时较长,大于10min,可以根据服务器CPU核心数修改语句为:

    ALTER INDEX BIDW.INX_FIN_CUX_DOC_SRE_U1 REBUILD PARALLEL 32;



    展开全文
  • Oracle数据库批量插入CSV数据 最近遇到一个比较蛋疼的事,需要把70G的csv数据导入到Oracle数据库中。一开始觉得没啥,可是当开始导入的时候我发现一个问题,好TM慢… 最后问了好多朋友,找了个批量导入的方法 下面...

    Oracle数据库批量插入CSV数据

    最近遇到一个比较蛋疼的事,需要把70G的csv数据导入到Oracle数据库中。一开始觉得没啥,可是当开始导入的时候我发现一个问题,好TM慢…
    在这里插入图片描述
    最后问了好多朋友,找了个批量导入的方法

    下面是我的数据格式:
    在这里插入图片描述
    第一列是时间格式的数据,Oracle数据库插入数据对时间格式的数据要求和其他数据库不同,需要进行格式转换,所以插入语句的建立要写对,具体可以自己去了解一下

    1、链接数据库

    oracle_prepare.py文件,这个是用来数据库交互的:

    	import cx_Oracle 
    	
    	class OrecleCommand(object):
    	
    	    def __init__(self):
    	        self.host = "localhost:1521/orcl"                                      # IP/端口
    	        self.user = "****"                                                     # 用户名
    	        self.password = "****"                                                 # 密码
    	
    	    def connectOracle(self):
    	        try:
    	            self.conn = cx_Oracle.connect(self.user, self.password, self.host)
    	            self.cursor = self.conn.cursor()
    	        except cx_Oracle.Error as error:
    	            print(error)
    	
    	    def insertDataTimeSeries(self, my_dict):
    	        try:
    	            self.cursor.prepare("INSERT INTO 表名(DATETIMES,RECORD,Ux,Uy,Uz,Ts,diag_sonic,CO2,H2O,diag_irga,Tc,amb_tmpr,amb_press,CO2_sig_strgth,H2O_sig_strgth) VALUES (TO_TIMESTAMP(:1,'YYYY-MM-DD HH24:MI:SS.FF6'),:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15)")
    	            self.cursor.executemany(None, my_dict)
    	            self.conn.commit()
    	        except cx_Oracle.Error as error:
    	            print(error)
    	
    	    def closeOracle(self):
    	        self.cursor.close()
    	        self.conn.close()
    

    2、文件操作

    csv_to_oracle.py文件,操作csv文件

    import os
    import csv
    from oracle_prepare import OrecleCommand
    
    def csv_with(csv_path, file_name_list):
        result = []
        orecleCommand = OrecleCommand()
        orecleCommand.connectOracle()                                   #建立数据库连接
        for file_item_name in file_name_list:                           #遍历文件名
            csv_all_path = os.path.join(csv_path, file_item_name)       #建立单个文件全路径
            with open(csv_all_path,"r") as csv_file:
                reader=csv.reader(csv_file)
                for line_list in reader:
                    result.append((line_list[0],line_list[1],line_list[2],line_list[3],line_list[4],line_list[5],line_list[6],line_list[7],line_list[8],line_list[9],line_list[10],line_list[11],line_list[12],line_list[13],line_list[14]))
            orecleCommand.insertDataTimeSeries(result)   #插入数据入库
            result.clear()                                              #一定要清空列表!!!,不然数据会累积
        orecleCommand.closeOracle()                                     #关闭数据库连接
    
    csv_path =r"E:\Time_CSV"                                            #所有csv的文件路径
    file_name_list = os.listdir(csv_path)                               #获取所有文件路径下的文件名
    csv_with(csv_path, file_name_list)
    

    推荐参考https://blog.csdn.net/colourless/article/details/41444069#commentBox

    展开全文
  • 二、oracle清空表数据id从如何从1开始自增 注:以下步骤中seq_name全部替换成自己创建的序列的名称 1、先查出seq_name的nextval,如下图查询出的id的值是3 # seq_name指创建的序列名 select seq_name.nextval from...

    一、oracle设置id自增

    二、oracle清空表数据id从如何从1开始自增

    • 注:以下步骤中seq_name全部替换成自己创建的序列的名称

    1、先查出seq_name的nextval,如下图查询出的id的值是3

    # seq_name指创建的序列名
    select seq_name.nextval from dual; 
    

    在这里插入图片描述
    2、设置序列自增的值为-(n-1),n为第1步查询出的值即3,如下图:

    #seq_name指创建的序列名
    alter sequence seq_name increment by -2; //注意是-(n-1)
    

    在这里插入图片描述
    3、再重新查出seq_name的nextval,如下图查询出的id的值已经变成1

    #seq_name指创建的序列名
    select seq_name.nextval from dual; 
    

    在这里插入图片描述

    4、再重新设置序列自增步长,lz设置为1,每次id的值自增1,如下图:

    #seq_name指创建的序列名
    alter sequence seq_name increment by 1;
    

    在这里插入图片描述

    展开全文
  • 然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表。对于表中完全重复数据去重,可以采用以下SQL语句。--CodeCREATE TABLE "#temp" AS (SELECTDISTINCT * FROM 表名); --创建临时表,并把DISTINCT ...

    一、完全重复数据去重方法

    具体思路是,首先创建一个临时表,然后将DISTINCT之后的表数据插入到这个临时表中;然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表。

    对于表中完全重复数据去重,可以采用以下SQL语句。

    --Code

    CREATE TABLE "#temp" AS (SELECTDISTINCT * FROM 表名);   --创建临时表,并把DISTINCT 去重后的数据插入到临时表中

    truncate TABLE 表名; --清空原表数据

    INSERT INTO 表名 (SELECT * FROM "#temp");   --将临时表数据插入到原表中

    DROP TABLE "#temp";  --删除临时表

    二、部分数据去重方法

    我们可以考虑建立临时表,将需要判断重复的字段、rowid插入临时表中,然后删除的时候在进行比较。

    createtable 临时表 as

    select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUPBY a.字段1,a.字段2;

    deletefrom 表名 a

    where a.rowid!=(

    select b.dataid from 临时表 b

    where a.字段1=b.字段1 and

    a.字段2=b.字段2

    );

    commit;

    实例:思路

    1、根据上面的思路操作

    2、删除正式表,然后把临时表数据插入到正式表中

    -- 根据MAX(a.rowid)筛选重复的数据,获得一张数据不重复的临时表

    create table 临时表 as

    select a.ip,a.port,MAX(a.ROWID) dataid from ipresult

    a GROUP BY a.ip,a.port;

    -- 删除正式表中重复数据,只保留最新的一条数据

    delete from ipresult a

    where a.rowid!=(

    select b.dataid from 临时表 b

    where a.ip=b.ip and

    a.port=b.port

    );

    --删除临时表并提交

    drop table 临时表;

    commit;

    引用资料:

    原文:https://www.cnblogs.com/Dream2hc/p/knowledge575580.html

    展开全文
  • oracle插入图片和读取图片

    千次阅读 2019-03-04 18:28:29
    oracle插入图片和读取图片 代码如下: package demo; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io....
  • 数据库中插入数据的操作的语法结构: insert into 表名 (字段1,字段2...) values (值1,值2...); 每次插入完或者说操作完要进行"保存",当然,数据库操作时也可以点击保存但还有一种方法输入代码进行"保存"你的...
  • create or replace procedure proc1 as  CURSOR cur IS select a.config_id, a.code, a.creation_date, a.last_update_date from table_a a, table_b b where a.config_id = b.config_id and a.last_update_date >
  • Oracle 批量插入sql优化一例COUNT(1) 概念 大多数程序员进行大数据量任务的加工处理时,因考虑可能没有足够的undo空间,或者认为 频繁地提交大量小事务 会比处理和 提交一个大事务 更快,也更高效,因此总是力图找...
  • 通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然就会出现问题,而...
  • JDBC实现一次向Oracle数据库表中插入1千万条数据 说明:环境为eclipse + jdk1.7 所需jar包:ojdbc6-11.2.0.1.0.jar 亮点:使用PreparedStatement + addBatch()方法(实现了秒级的插入速度) 1、变多次提交为一次 2、...
  • Oracle 用merge into 解决插入重复数据问题 继昨天解决用python向oralce插入数据问题,今天考虑到我插入的数据每次都是包含前一次插入的数据,太多重复值不利于之后的数据可视化,所以想着能不能插入数据的时候自动...
  • 一,没有优化的速度:Executed in 69.436 seconds .../*清空共享池,注意生产环境中千万不能做这步操作*/ alter system flush shared_pool; create or replace procedure proc1 as begin  for i
  • --插入、更新 insSql.SQL.Add(‘INSERT INTO RPTDEF (BIANH, RPTBLOB) VALUES (:BIANH, EMPTY_BLOB()) RETURNING RPTBLOB INTO :RPTBLOB‘); Update RPTDEF set rptblob = EMPTY_BLOB() where bianh = :bianh ...
  • 以下的测试基于scott用户下的emp表 ...首先用while循环进行测试,向emp表插入999条数据 1 declare 2 i emp.empno%type :=1; 3 begin 4 while i<1000 5 loop 6 insert into emp(empno,ename,sa...
  • –向数据中插入数据 insert into用法 insert into classinfo(classid,classname) values(01,'测试一班'); insert into classinfo(classid,classname) values(02,'测试二班'); insert into classinfo(classid,...
  • 1、首先建立一个测试表 CREATE TABLE TestTragger( UserId int Primary Key, Name VARCHAR(10) Not Null, CreateTime Timestamp Not Null ...一、old和new在Oracle中不区分大小写; 二、old和new可以...
  • // 批量插入,以下两个方法都需要依靠序列器 insert into GH_FC_YENERGY(ID, NETID, CALIBERID, YEAR, RESULT, RESULT_TYPE, CREATEDATE, USERNO) // SEQ_AUTOID.nextval为Oracle中创建的序列,外包一层循环是为了...
  • 水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当
  • ORACLE数据库测试数据插入速度(十万)

    千次阅读 2016-03-09 22:07:45
    一,没有优化的速度:Executed in 69.436 seconds .../*清空共享池,注意生产环境中千万不能做这步操作*/ alter system flush shared_pool; create or replace procedure proc1 as  begin  fo
  • Oracle 清空表的方式

    2020-11-12 19:13:11
    Oracle 清空表的方式: 方式一:delete from 表名 方式二:truncate table 表名 清空方式的区别: 1、delete是dml操作;truncate是ddl操作,ddl隐式提交不能回滚 2、delete from 可以回滚,truncate table 不可以...
  • 3、插入前需要先清空数据库的表。 4、要求插入效率比较高。 5、如果插入失败,回滚到插入前的表。 求高人,给完整代码。 最好通过以下代码改造,下面的代码可以运行,但效率很低。 public static int ...
  • 我又一张表,程序插不进数据所以建了张临时表,程序先插入到临时表,然后每1分钟从临时表插入到这张表里,然后把临时表清空,但现在的问题是有些数据过去了也没问题,有些数据后来查不到,没有插过去,刚测试了几把...
  • Oracle优化:大量数据插入或更新

    万次阅读 2015-08-15 10:42:50
    我的想法是:大量的数据更新肯定会写记录,而大量的写记录又会触发lgwr,所以机器变卡的原因是内存暂满还有写重做日记。如果操作是添加日志组或增大日志的大小,又或者调整SGA里面各种池的大小,其实也是没有用,...
  • 问题叙述:用EXECUTEIMMEDIATE动态往临时表插入数据,跟踪发现插入临时表后数据会立马清空,按理说等存储过程执行完才会清空临时表才对,现在是执行插入语句后下一步验证就发现临时表就没有数据了,不知道什么原因,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,426
精华内容 8,170
关键字:

oracle清空在插入