Copying large amount of data from one table to another
We have a requirement to copy data from a staging area (consists of several tables) to the actual tables. The copy operation needs to
1) delete the old values from the actual tables
2) copy data from staging area to actual tables
3) commit only after all rows in the staging area are copied successfully. Otherwise, it should rollback.
Is it possible to complete all these steps in one transaction without causing problems with the rollback segments, etc.? What are the things that I need to consider in order to make sure that we will not run into production problems?
Also, what other best practices/alternative methods are available to accomplish what is described above.
Thanks,
Eser
It's certainly possible to do this in a single transaction. In fact, that would be the best practice.
Of course, the larger your transactions are, the more rollback you need. You need to allocate sufficient rollback (undo in 9i) to handle the transaction size you're expecting.
Justin
Distributed Database Consulting, Inc.
www.ddbcinc.com
Similar Messages
-
Copying large amount of data from one table to another getting slower
I have a process that copies data from one table (big_tbl) into a very big archive table (vb_archive_tbl - 30 mil recs - partitioned table). If there are less than 1 million records in the big_tbl the copy to the vb_archive_table is fast (-10 min), but more importantly - it's consistant. However, if the number of records is greater than 1 million records in the big_tbl copying the data into the vb_archive_tbl is very slow (+30 min - 4 hours), and very inconsistant. Every few days the time it takes to copy the same amount of data grows signicantly.
Here's an example of the code I'm using, which uses BULK COLLECT and FORALL INSERST to copy the data.
I occasionally change 'LIMIT 5000' to see performance differences.
DECLARE
TYPE t_rec_type IS RECORD (fact_id NUMBER(12,0),
store_id VARCHAR2(10),
product_id VARCHAR2(20));
TYPE CFF_TYPE IS TABLE OF t_rec_type
INDEX BY BINARY_INTEGER;
T_CFF CFF_TYPE;
CURSOR c_cff IS SELECT *
FROM big_tbl;
BEGIN
OPEN c_cff;
LOOP
FETCH c_cff BULK COLLECT INTO T_CFF LIMIT 5000;
FORALL i IN T_CFF.first..T_CFF.last
INSERT INTO vb_archive_tbl
VALUES T_CFF(i);
COMMIT;
EXIT WHEN c_cff%NOTFOUND;
END LOOP;
CLOSE c_cff;
END;
Thanks you very much for any advice
Edited by: reid on Sep 11, 2008 5:23 PMAssuming that there is nothing else in the code that forces you to use PL/SQL for processing, I'll second Tubby's comment that this would be better done in SQL. Depending on the logic and partitioning approach for the archive table, you may be better off doing a direct-path load into a staging table and then doing a partition exchange to load the staging table into the partitioned table. Ideally, you could just move big_tbl into the vb_archive_tbl with a single partition exchange operation.
That said, if there is a need for PL/SQL, have you traced the session to see what is causing the slowness? Is the query plan different? If the number of rows in the table is really a trigger, I would tend to suspect that the number of rows is causing the optimizer to choose a different plan (with your sample code, the plan is obvious, but perhaps you omitted some where clauses to simplify things down) which may be rather poor.
Justin -
Transporting large amounts of data from one database schema to another
Hi,
We need to move large amount of data from one 10.2.0.4 database schema to another 11.2.0.3 database.
Am currently using datapump but quite slow still - having to do in chunks.
Also the datapump files quite large so having to compress and move across the network.
Is there a better/quicker way?
Habe haerd about transportable tablespaces but never used them and don't know about speed - if quicker thana datapump.
tablespace names different in both databases.
Also source database on solaris opertaing system on sun box
target database on aix on ibm power series box.
Any ideas would be great.
Thanks
Edited by: user5716448 on 08-Sep-2012 03:30
Edited by: user5716448 on 08-Sep-2012 03:31user5716448 wrote:
Hi,
We need to move large amount of data from one 10.2.0.4 database schema to another 11.2.0.3 database.
Pl quantify "large".
Am currently using datapump but quite slow still - having to do in chunks.
Pl quantify "quite slow".
Also the datapump files quite large so having to compress and move across the network.
Again, pl quantify "quite large".
Is there a better/quicker way?
Habe haerd about transportable tablespaces but never used them and don't know about speed - if quicker thana datapump.
tablespace names different in both databases.
Also source database on solaris opertaing system on sun box
target database on aix on ibm power series box.
It may be possible, assuming you do not violate any of these conditions
http://docs.oracle.com/cd/E11882_01/server.112/e25494/tspaces013.htm#ADMIN11396
Any ideas would be great.
Thanks
Edited by: user5716448 on 08-Sep-2012 03:30
Edited by: user5716448 on 08-Sep-2012 03:31Master Note for Transportable Tablespaces (TTS) -- Common Questions and Issues [ID 1166564.1]
HTH
Srini -
T code to Copy Data from one table to another table
Hi,
I want copy all data of one table to its copy table. Anyone knows transaction code to copy data from one table to another table.
Regards,
Jigar Thakkar.Hi
Create a small program.
Extract data from T1 - database table and put it in one internal table - itab1.
loop the itab1 data .............
insert itab1 into tab2. (tab2 - second database table)
endloop.
try this....
hope it works.... -
Adding Data From One Table to Another
Now, this doesn't strike me as a particularly complex problem, but I've either strayed outside the domain of Numbers or I'm just not looking at the problem from the right angle. In any case, I'm sure you guys can offer some insight.
What I'm trying to do is, essentially, move data from one table to another. One table is a calendar, a simple two column 'date/task to be completed' affair, the other is a schedule of jogging workouts, i.e, times, distances. Basically, I'm trying to create a formula that copies data from the second table onto the first but only for odd days of the week, excepting Sundays (and assuming Monday as the start of the week). Now, this isn't the hard part, I can do that. The problem comes when I replicate the formula down the calendar. Even on the days when the 'if' statement identifies it as an 'even day', the cell reference to the appropriate workout on the second table is incremented, so when it comes to the next 'odd day', it has skipped a workout.
I can't seem to see any way of getting it to specifically copy the NEXT line in the second table, and not the corresponding line.
This began as a distraction to try and organise my running so I could see at a glance what I had to do that day and track my progress, but now it's turned into an obsession. SURELY there's a solution?
Cheers.Hi Sealatron,
Welcome to Apple Discussions and the Numbers '09 forum.
Several possible ways to move the data occur to me, but the devil's in the details of how the data is currently arranged.
Is it
• a list of three workouts, one for each of Monday, Wednesday and Friday, then the same three repeated the following week?
• an open-ended list that does not repeat?
• something else?
Regards,
Barry -
Move data from one table to another table
Hi all,
I had a custom table called sales_data in that table there are columns like JAn,FEB,upto DEC including other columns so in each month there is some data total data is 23000 count but each month has has specific data like JAn-2500,FEB-2000 like that it has total 23000 records
My Requirement is i have to move data from one table to another table that too if i will pass jan only jan data should move like that feb,march,.....
in my table there is no month column i had get it from another table called gl_periods and by using cursor and case function i have written the code
well while when i am inserting data am passing year,month as parameters but 23000 data is moving it should get like that.
Please suggest me.its urgent
Thank YouHi hamid,
Please go through the below procedure.
CREATE OR REPLACE PROCEDURE APPS.copy_sales_to_forecast(p_fiscal_year varchar2,p_month number)
IS
CURSOR C1 IS select period_year,period_num,start_date,end_date from apps.gl_periods
where period_set_name='Accounting'
and period_year=p_fiscal_year
and period_num<=p_month;
type type1 is table of xxc_forecast_data%rowtype;
t1 type1;
BEGIN
FOR CREC IN C1 LOOP
BEGIN
DELETE FROM xxc_forecast2
where fiscal_year = crec.period_year
and attribute1='Copied From Sales to Forecast Table of Month '||crec.period_num;
END;
SELECT
product_category ,
product_sub_category ,
product_line ,
product_style ,
item_number ,
item_description ,
customer_name ,
customer_number ,
sales_channel ,
null ,
CASE
WHEN crec.period_num=1 THEN sales_amount_month1
ELSE 0
END Transaction_quantity_period1,
CASE
WHEN crec.period_num=1 THEN sales_cost_month1
ELSE 0
END item_cogs_period1,
CASE
WHEN crec.period_num=1 THEN sales_mtl_cost_month1
ELSE 0
END item_material_cogs_period1 ,
CASE
WHEN crec.period_num=1 THEN sales_mtl_ovhd_cost_month1
ELSE 0
END item_mtl_ovhd_cogs_period1,
CASE
WHEN crec.period_num=1 THEN sales_res_cost_month1
ELSE 0
END item_resource_cogs_period1,
CASE
WHEN crec.period_num=1 THEN sales_op_cost_month1
ELSE 0
END item_op_cogs_period1,
CASE
WHEN crec.period_num=1 THEN sales_ovhd_month1
ELSE 0
END item_ovhd_cogs_period1,
CASE
WHEN crec.period_num=1 THEN sales_units_month1
ELSE 0
END extended_amount_us_period1,
CASE
WHEN crec.period_num=2 THEN sales_amount_month2
ELSE 0
END Transaction_quantity_period2,
CASE
WHEN crec.period_num=2 THEN sales_mtl_cost_month2
ELSE 0
END item_material_cogs_period2,
CASE
WHEN crec.period_num=2 THEN sales_mtl_ovhd_cost_month2
ELSE 0
END item_mtl_ovhd_cogs_period2,
CASE
WHEN crec.period_num=2 THEN sales_res_cost_month2
ELSE 0
END item_resource_cogs_period2,
CASE
WHEN crec.period_num=2 THEN sales_op_cost_month2
ELSE 0
END item_op_cogs_period2,
CASE
WHEN crec.period_num=2 THEN sales_ovhd_month2
ELSE 0
END item_ovhd_cogs_period2,
CASE
WHEN crec.period_num=2 THEN sales_units_month2
ELSE 0
END extended_amount_us_period2,
CASE
WHEN crec.period_num=3 THEN sales_amount_month3
ELSE 0
END Transaction_quantity_period3,
CASE
WHEN crec.period_num=3 THEN sales_mtl_cost_month3
ELSE 0
END item_material_cogs_period3,
CASE
WHEN crec.period_num=3 THEN sales_mtl_ovhd_cost_month3
ELSE 0
END item_mtl_ovhd_cogs_period3,
CASE
WHEN crec.period_num=3 THEN sales_res_cost_month3
ELSE 0
END item_resource_cogs_period3,
CASE
WHEN crec.period_num=3 THEN sales_op_cost_month3
ELSE 0
END item_op_cogs_period3,
CASE
WHEN crec.period_num=3 THEN sales_ovhd_month3
ELSE 0
END item_ovhd_cogs_period3,
CASE
WHEN crec.period_num=3 THEN sales_units_month3
ELSE 0
END extended_amount_us_period3,
CASE
WHEN crec.period_num=4 THEN sales_amount_month4
ELSE 0
END Transaction_quantity_period4,
CASE
WHEN crec.period_num=4 THEN sales_mtl_cost_month4
ELSE 0
END item_material_cogs_period4,
CASE
WHEN crec.period_num=4 THEN sales_mtl_ovhd_cost_month4
ELSE 0
END item_mtl_ovhd_cogs_period4,
CASE
WHEN crec.period_num=4 THEN sales_res_cost_month4
ELSE 0
END item_resource_cogs_period4,
CASE
WHEN crec.period_num=4 THEN sales_op_cost_month4
ELSE 0
END item_op_cogs_period4,
CASE
WHEN crec.period_num=4 THEN sales_ovhd_month4
ELSE 0
END item_ovhd_cogs_period4,
CASE
WHEN crec.period_num=4 THEN sales_units_month4
ELSE 0
END extended_amount_us_period4,
CASE
WHEN crec.period_num=5 THEN sales_amount_month5
ELSE 0
END Transaction_quantity_period5,
CASE
WHEN crec.period_num=5 THEN sales_mtl_cost_month5
ELSE 0
END item_material_cogs_period5,
CASE
WHEN crec.period_num=5 THEN sales_mtl_ovhd_cost_month5
ELSE 0
END item_mtl_ovhd_cogs_period5,
CASE
WHEN crec.period_num=5 THEN sales_res_cost_month5
ELSE 0
END item_resource_cogs_period5,
CASE
WHEN crec.period_num=5 THEN sales_op_cost_month5
ELSE 0
END item_op_cogs_period5,
CASE
WHEN crec.period_num=5 THEN sales_ovhd_month5
ELSE 0
END item_ovhd_cogs_period5,
CASE
WHEN crec.period_num=5 THEN sales_units_month5
ELSE 0
END extended_amount_us_period5,
CASE
WHEN crec.period_num=6 THEN sales_amount_month6
ELSE 0
END Transaction_quantity_period6,
CASE
WHEN crec.period_num=6 THEN sales_mtl_cost_month6
ELSE 0
END item_material_cogs_period6,
CASE
WHEN crec.period_num=6 THEN sales_mtl_ovhd_cost_month6
ELSE 0
END item_mtl_ovhd_cogs_period6,
CASE
WHEN crec.period_num=6 THEN sales_res_cost_month6
ELSE 0
END item_resource_cogs_period6,
CASE
WHEN crec.period_num=6 THEN sales_op_cost_month6
ELSE 0
END item_op_cogs_period6,
CASE
WHEN crec.period_num=6 THEN sales_ovhd_month6
ELSE 0
END item_ovhd_cogs_period6,
CASE
WHEN crec.period_num=6 THEN sales_units_month6
ELSE 0
END extended_amount_us_period6,
CASE
WHEN crec.period_num=7 THEN sales_amount_month7
ELSE 0
END Transaction_quantity_period7,
CASE
WHEN crec.period_num=7 THEN sales_mtl_cost_month7
ELSE 0
END item_material_cogs_period7,
CASE
WHEN crec.period_num=7 THEN sales_mtl_ovhd_cost_month7
ELSE 0
END item_mtl_ovhd_cogs_period7,
CASE
WHEN crec.period_num=7 THEN sales_res_cost_month7
ELSE 0
END item_resource_cogs_period7,
CASE
WHEN crec.period_num=7 THEN sales_op_cost_month7
ELSE 0
END item_op_cogs_period7,
CASE
WHEN crec.period_num=7 THEN sales_ovhd_month7
ELSE 0
END item_ovhd_cogs_period7,
CASE
WHEN crec.period_num=7 THEN sales_units_month7
ELSE 0
END extended_amount_us_period7,
CASE
WHEN crec.period_num=8 THEN sales_amount_month8
ELSE 0
END Transaction_quantity_period8,
CASE
WHEN crec.period_num=8 THEN sales_mtl_cost_month8
ELSE 0
END item_material_cogs_period8,
CASE
WHEN crec.period_num=8 THEN sales_mtl_ovhd_cost_month8
ELSE 0
END item_mtl_ovhd_cogs_period8,
CASE
WHEN crec.period_num=8 THEN sales_res_cost_month8
ELSE 0
END item_resource_cogs_period7,
CASE
WHEN crec.period_num=8 THEN sales_op_cost_month8
ELSE 0
END item_op_cogs_period8,
CASE
WHEN crec.period_num=8 THEN sales_ovhd_month8
ELSE 0
END item_ovhd_cogs_period8,
CASE
WHEN crec.period_num=8 THEN sales_units_month8
ELSE 0
END extended_amount_us_period8,
CASE
WHEN crec.period_num=9 THEN sales_amount_month9
ELSE 0
END Transaction_quantity_period9,
CASE
WHEN crec.period_num=9 THEN sales_mtl_cost_month9
ELSE 0
END item_material_cogs_period9,
CASE
WHEN crec.period_num=9 THEN sales_mtl_ovhd_cost_month9
ELSE 0
END item_mtl_ovhd_cogs_period9,
CASE
WHEN crec.period_num=9 THEN sales_res_cost_month9
ELSE 0
END item_resource_cogs_period7,
CASE
WHEN crec.period_num=9 THEN sales_op_cost_month9
ELSE 0
END item_op_cogs_period9,
CASE
WHEN crec.period_num=9 THEN sales_ovhd_month9
ELSE 0
END item_ovhd_cogs_period9,
CASE
WHEN crec.period_num=9 THEN sales_units_month9
ELSE 0
END extended_amount_us_period9,
CASE
WHEN crec.period_num=10 THEN sales_amount_month10
ELSE 0
END Transaction_quantity_period10,
CASE
WHEN crec.period_num=10 THEN sales_mtl_cost_month10
ELSE 0
END item_material_cogs_period10,
CASE
WHEN crec.period_num=10 THEN sales_mtl_ovhd_cost_month10
ELSE 0
END item_mtl_ovhd_cogs_period10,
CASE
WHEN crec.period_num=10 THEN sales_res_cost_month10
ELSE 0
END item_resource_cogs_period10,
CASE
WHEN crec.period_num=10 THEN sales_op_cost_month10
ELSE 0
END item_op_cogs_period10,
CASE
WHEN crec.period_num=10 THEN sales_ovhd_month10
ELSE 0
END item_ovhd_cogs_period10,
CASE
WHEN crec.period_num=10 THEN sales_units_month10
ELSE 0
END extended_amount_us_period10,
CASE
WHEN crec.period_num=11 THEN sales_amount_month11
ELSE 0
END Transaction_quantity_period11,
CASE
WHEN crec.period_num=11 THEN sales_mtl_cost_month11
ELSE 0
END item_material_cogs_period11,
CASE
WHEN crec.period_num=11 THEN sales_mtl_ovhd_cost_month11
ELSE 0
END item_mtl_ovhd_cogs_period11,
CASE
WHEN crec.period_num=11 THEN sales_res_cost_month11
ELSE 0
END item_resource_cogs_period11,
CASE
WHEN crec.period_num=11 THEN sales_op_cost_month11
ELSE 0
END item_op_cogs_period11,
CASE
WHEN crec.period_num=11 THEN sales_ovhd_month11
ELSE 0
END item_ovhd_cogs_period11,
CASE
WHEN crec.period_num=11 THEN sales_units_month11
ELSE 0
END extended_amount_us_period11,
CASE
WHEN crec.period_num=12 THEN sales_amount_month12
ELSE 0
END Transaction_quantity_period12,
CASE
WHEN crec.period_num=12 THEN sales_mtl_cost_month12
ELSE 0
END item_material_cogs_period12,
CASE
WHEN crec.period_num=12 THEN sales_mtl_ovhd_cost_month12
ELSE 0
END item_mtl_ovhd_cogs_period12,
CASE
WHEN crec.period_num=12 THEN sales_res_cost_month12
ELSE 0
END item_resource_cogs_period12,
CASE
WHEN crec.period_num=12 THEN sales_op_cost_month12
ELSE 0
END item_op_cogs_period12,
CASE
WHEN crec.period_num=12 THEN sales_ovhd_month12
ELSE 0
END item_ovhd_cogs_period12,
CASE
WHEN crec.period_num=12 THEN sales_units_month12
ELSE 0
END extended_amount_us_period12,
CASE
WHEN crec.period_num=2 THEN sales_cost_month2
ELSE 0
END item_cogs_period2,
CASE
WHEN crec.period_num=3 THEN sales_cost_month3
ELSE 0
END item_cogs_period3,
CASE
WHEN crec.period_num=4 THEN sales_cost_month4
ELSE 0
END item_cogs_period4,
CASE
WHEN crec.period_num=5 THEN sales_cost_month5
ELSE 0
END item_cogs_period5,
CASE
WHEN crec.period_num=6 THEN sales_cost_month6
ELSE 0
END item_cogs_period6,
CASE
WHEN crec.period_num=7 THEN sales_cost_month7
ELSE 0
END item_cogs_period7,
CASE
WHEN crec.period_num=8 THEN sales_cost_month8
ELSE 0
END item_cogs_period8,
CASE
WHEN crec.period_num=9 THEN sales_cost_month9
ELSE 0
END item_cogs_period9,
CASE
WHEN crec.period_num=10 THEN sales_cost_month10
ELSE 0
END item_cogs_period10,
CASE
WHEN crec.period_num=11 THEN sales_cost_month11
ELSE 0
END item_cogs_period11,
CASE
WHEN crec.period_num=12 THEN sales_cost_month12
ELSE 0
END item_cogs_period12,
a.fiscal_year ,
a.budget_entity ,
a.organization_code,
a.customer_id ,
a.inventory_item_id ,
NULL,
NULL,
a.created_by ,
a.last_updated_by ,
a.creation_date ,
a.last_update_date ,
'Copied From Sales to Forecast Table of Month '||crec.period_num,
a.attribute2,
a.attribute3 ,
a.attribute4 ,
a.attribute5 ,
a.attribute6 ,
a.attribute7 ,
a.attribute8 ,
a.attribute9 ,
a.attribute10,
a.attribute11,
a.attribute12,
a.attribute13,
a.attribute14,
a.attribute15
bulk collect into t1
FROM xxc_sales_data a
where a.fiscal_year = crec.period_year
having CASE
WHEN crec.period_num=1 THEN sum(sales_amount_month1)
WHEN crec.period_num=2 THEN sum(sales_amount_month2)
WHEN crec.period_num=3 THEN sum(sales_amount_month3)
WHEN crec.period_num=4 THEN sum(sales_amount_month4)
WHEN crec.period_num=5 THEN sum(sales_amount_month5)
WHEN crec.period_num=6 THEN sum(sales_amount_month6)
WHEN crec.period_num=7 THEN sum(sales_amount_month7)
WHEN crec.period_num=8 THEN sum(sales_amount_month8)
WHEN crec.period_num=9 THEN sum(sales_amount_month9)
WHEN crec.period_num=10 THEN sum(sales_amount_month10)
WHEN crec.period_num=11 THEN sum(sales_amount_month11)
WHEN crec.period_num=12 THEN sum(sales_amount_month12)
END !=0;
FORALL i IN t1.first .. t1.last
INSERT INTO xxc_forecast2 VALUES t1(i);
--commit;
END LOOP;
END;
Thank You -
Moving Data from one table to another table
Hi,
I've a requirement to move large volumes (few billions) of data from one table to another empty target table. The target has more number of attributes and may not have same attribute name as the source. Please let me know what's the best method using oracle to move data in this case?
Thanks in Advance,
TomYou should use nologging and parallelism options
Please refer to Tom's answers:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:164612348068
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6407993912330
Kamran Agayev A. (10g OCP)
http://kamranagayev.wordpress.com
[Step by Step install Oracle on Linux and Automate the installation using Shell Script |http://kamranagayev.wordpress.com/2009/05/01/step-by-step-installing-oracle-database-10g-release-2-on-linux-centos-and-automate-the-installation-using-linux-shell-script/] -
Moving time-dependant data from one table to another (archiving)
Hello all
I would like to know if there's an easier solution or a "best practice" to move data from one table to another. The context of this issue can be found within "archiving".
More concretely: we have an application that uses several tables to log information to.
These tables are growing like crazy, and we would like to keep only "relevant" data in those tables, so I was thinking about moving data from these tables that have been in there for, say 2 months, to "archiving" tables.
I figured there must be some kind of "best practice" to get this done.
I have already written a procedure that loops the table that has the time indicator and inserts the records from the normal tables into the archive tables (and afterwards delete this data), but it seems to be taking ages to get it done.
Thanks in advance!
Message was edited by:
timschraepenThere is nothing to do with PL/SQL.
You can refer below links:
http://www.lc.leidenuniv.nl/awcourse/oracle/server.920/a96524/c12parti.htm
http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10739/partiti.htm#i1006727 -
Insert old missing data from one table to another(databaase trigger)
Hello,
i want to do two things
1)I want to insert old missing data from one table to another through a database trigger but it can't be executed that way i don't know what should i do in case of replacing old data in table_1 into table_2
2)what should i use :NEW. OR :OLD. instead.
3) what should i do if i have records exising between the two dates
i want to surpress the existing records.
the following code is what i have but no effect occured.
CREATE OR REPLACE TRIGGER ATTENDANCEE_FOLLOWS
AFTER INSERT ON ACCESSLOG
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
V_COUNT NUMBER(2);
V_TIME_OUT DATE;
V_DATE_IN DATE;
V_DATE_OUT DATE;
V_TIME_IN DATE;
V_ATT_FLAG VARCHAR2(3);
V_EMP_ID NUMBER(11);
CURSOR EMP_FOLLOWS IS
SELECT EMPLOYEEID , LOGDATE , LOGTIME , INOUT
FROM ACCESSLOG
WHERE LOGDATE
BETWEEN TO_DATE('18/12/2008','dd/mm/rrrr')
AND TO_DATE('19/12/2008','dd/mm/rrrr');
BEGIN
FOR EMP IN EMP_FOLLOWS LOOP
SELECT COUNT(*)
INTO V_COUNT
FROM EMP_ATTENDANCEE
WHERE EMP_ID = EMP.EMPLOYEEID
AND DATE_IN = EMP.LOGDATE
AND ATT_FLAG = 'I';
IF V_COUNT = 0 THEN
INSERT INTO EMP_ATTENDANCEE (EMP_ID, DATE_IN ,DATE_OUT
,TIME_IN ,TIME_OUT,ATT_FLAG)
VALUES (TO_NUMBER(TO_CHAR(:NEW.employeeid,99999)),
TO_DATE(:NEW.LOGDATE,'dd/mm/rrrr'), -- DATE_IN
NULL,
TO_DATE(:NEW.LOGTIME,'HH24:MI:SS'), -- TIME_IN
NULL ,'I');
ELSIF V_COUNT > 0 THEN
UPDATE EMP_ATTENDANCEE
SET DATE_OUT = TO_DATE(:NEW.LOGDATE,'dd/mm/rrrr'), -- DATE_OUT,
TIME_OUT = TO_DATE(:NEW.LOGTIME,'HH24:MI:SS'), -- TIME_OUT
ATT_FLAG = 'O'
WHERE EMP_ID = TO_NUMBER(TO_CHAR(:NEW.employeeid,99999))
AND DATE_IN <= (SELECT MAX (DATE_IN )
FROM EMP_ATTENDANCEE
WHERE EMP_ID = TO_NUMBER(TO_CHAR(:NEW.employeeid,99999))
AND DATE_OUT IS NULL
AND TIME_OUT IS NULL )
AND DATE_OUT IS NULL
AND TIME_OUT IS NULL ;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN RAISE;
END ATTENDANCEE_FOLLOWS ;
Regards,
Abdetu..INSERT INTO SALES_MASTER
( NO
, Name
, PINCODE )
SELECT SALESMANNO
, SALESMANNAME
, PINCODE
FROM SALESMAN_MASTER;Regards,
Christian Balz -
Append data from one table to another.
Hi,
I want to insert/append some or all the data from one table to another table.
For eg: Data from table table1 to be appended to table2 with the same constraints, indexes etc. The columns are same for both the tables.
I am using 10g version 2.
Please specify which method would be good for this process.
Thanks
JafarINSERT INTO TABLE1 SELECT * FROM TABLE2;The above command would insert data into table2 and it also contain the old data.Is that right,
Thanks
Jafar -
MySQL move date from one table to another
I was wondering if there is a MySQL command that will let me move a selected row of data from one table to another. both tables have the same columns and declaration type (one table is actually an archived table on old data)
example
I wasnt to move all data in Table1 where the date is greater than 30 days old to Table 2
-- so the result should be...import all rows to Table 2 where the date is greater than 30 days old..and delete all date from Table 1 that is greater than 30 days.
currently..I'm doing three process
1) get all row that is greater than 30 days
"SELECT * FROM Table1 WHERE TO_DAYS(NOW()) - TO_DAYS(dateField) > 30"
2) insert data into Table2
while (res.hasNext())
TableData data = ..... // .get row
dataList.add(data);
for (int i = 0; i < dataList.size(); i++){
pstm.setString.....
pstm.addBatch()
pstm.executeBatch();
3) delete data from Table1
"DELETE FROM Table 1 WHERE TO_DAYS(NOW()) - TO_DAYS(dateField) > 30"for this app..losing a few rows does not
impact on how we analyze the data.That's what everyone always tells me too. But 99% of the time they come back and want to know why the cannot balance and/or validate the data between two runs taken only minutes from each other.
I've seen people puzzle over data for days that they swear they ran the exact same utility for their tests, but they were in fact using live data, and additional data had accrued but since all they had to do was execute the a script without parameters (they didn't put in a stop time), they got two different answers and it always, and I mean always confuses people. Be safe, and put the option in for and end date/time, then when they waste days trying to figure out why the two different observations gave them different numbers, they cannot blame you (because you gave them the option)!
My 2 cents for the day... -
How to copy data from one table to another (in other database)
Hi. I would like to copy all rows from one table to another (and not use BC4J). Tables can be in various databases. I have already 2 connections and I am able to browse source table using
ResultSet rset = stmt.executeQuery("select ...");
But I would not like to create special insert statement for every row . There will be problems with date formats etc and it will be slow. Can I use retrieved ResultSet somehow ? Maybe with method insertRow, but how, if ResultSet is based on select statement and want to insert into target table? Please point me in the right direction. Thanks.No tools please, it must be common solution. We suceeded in converting our BC4J aplication to PostgreSQL, the MSSQL will be next. So we want to write simple aplication, which could transfer data from our tables between these 3 servers.
-
Copying data from one table to another table thru java
Hi
I have to copy data from table emp in Database A to table emp in Database B. My input would be table name and number of rows to be fetched. these rows i need to insert in table B.
The problem over here is I won't be having any info. of table emp i.e the number of columns it has and their type.
So is their any way i can copy the data from one table to other without having the info abt the number of cols and their type.
TIACross post - http://forum.java.sun.com/thread.jspa?threadID=5169293&messageID=9649839#9649839
-
Couldn't copy large amount of data from enterprise DB to Oracle 10g
Hi,
I am using i-batis to copy data from enterprise DB to oracle and viceversa.
The datatype of a field on EDB is 'text' and the datatype on oracle is 'SYS.XMLTYPE'
i am binding these to a java string property in a POJO to bind values.
I could successfully copy limited amount of data from EDB to oracle but if there is more data, i am getting the following exceptions with different oracle drivers ( but i could read large amount of data from EDB):
--- Cause: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:457)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:66)
at com.aqa.pojos.OstBtlData.updateOracleFromEdbBtlWebservice(OstBtlData.java:282)
at com.aqa.pojos.OstBtlData.searchEdbAndUpdateOracleBtlWebservice(OstBtlData.java:258)
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/aqa/sqlmaps/SQLMaps_OSTBTL_Oracle.xml.
--- The error occurred while applying a parameter map.
--- Check the updateOracleFromEDB-InlineParameterMap.
--- Check the parameter mapping for the 'btlxml' property.
--- Cause: java.sql.SQLException: setString can only process strings of less than 32766 chararacters
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)
at com.iba
I have latest oracle 10g jdbc drivers.
remember, i could copy any amount of data from oracle to EDB but not otherway around.
PLease let me know if you have come across this issue, any recommendation is very much appreciated.
Thanks,
CK.Hi,
I finally remembered how I solved this issue previously.
The jdbc driver isn't able to directly call the insert with a column xml_type. The solution I was using was to build a wrapper function in plSQL.
Here it is (for insert but I suppose tha update will be the same)
create or replace procedure insertXML(file_no_in in number, program_no_in in varchar2, ost_XML_in in clob, btl_XML_in in clob) is
begin
insert into AQAOST_FILES (file_no,program_no,ost_xml,btl_xml) values(file_no_in, program_no_in, xmltype(ost_XML_in), xmltype(btl_XML_in));
end insertXML;
here is the sqlmap file I used
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="AqAost" type="com.sg2net.jdbc.AqAost" />
<insert id="insert" parameterClass="AqAost">
begin
insertxml(#fileNo#,#programNo#,#ostXML:CLOB#,#bltXML:CLOB#);
end;
</insert>
</sqlMap>
an here is a simple program
package com.sg2net.jdbc;
import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
import java.sql.Connection;
import oracle.jdbc.pool.OracleDataSource;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class TestInsertXMLType {
* @param args
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String resource="sql-map-config-xmlt.xml";
Reader reader= Resources.getResourceAsReader(resource);
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
OracleDataSource dataSource= new OracleDataSource();
dataSource.setUser("test");
dataSource.setPassword("test");
dataSource.setURL("jdbc:oracle:thin:@localhost:1521:orcl");
Connection connection=dataSource.getConnection();
sqlMap.setUserConnection(connection);
AqAost aqAost= new AqAost();
aqAost.setFileNo(3);
aqAost.setProgramNo("prg");
Reader ostXMLReader= Resources.getResourceAsReader("ostXML.xml");
Reader bltXMLReader= Resources.getResourceAsReader("bstXML.xml");
aqAost.setOstXML(readerToString(ostXMLReader));
aqAost.setBltXML(readerToString(bltXMLReader));
sqlMap.insert("insert", aqAost);
connection.commit();
public static String readerToString(Reader reader) {
StringWriter writer = new StringWriter();
char[] buffer = new char[2048];
int charsRead = 0;
try {
while ((charsRead = reader.read(buffer)) > 0) {
writer.write(buffer, 0, charsRead);
} catch (IOException ioe) {
throw new RuntimeException("error while converting reader to String", ioe);
return writer.toString();
package com.sg2net.jdbc;
public class AqAost {
private long fileNo;
private String programNo;
private String ostXML;
private String bltXML;
public long getFileNo() {
return fileNo;
public void setFileNo(long fileNo) {
this.fileNo = fileNo;
public String getProgramNo() {
return programNo;
public void setProgramNo(String programNo) {
this.programNo = programNo;
public String getOstXML() {
return ostXML;
public void setOstXML(String ostXML) {
this.ostXML = ostXML;
public String getBltXML() {
return bltXML;
public void setBltXML(String bltXML) {
this.bltXML = bltXML;
I tested the insert and it works correctly
ciao,
Giovanni -
Loading data from one table to another using cursor
Hi,
I have given the below command to load the data from 1 table to another using cursor.
declare
cursor mycursor IS
SELECT extract_name,from_date,to_date,BETA from temp_table where EXTRACT_NAME='GIFTCARD_DETAILS';
Begin
for mycursor_1 IN mycursor loop
insert into tmp_tab columns(col1,col2,col3,col5) values(mycursor_1.EXTRACT_NAME,mycursor_1.from_date,mycursor_1.to_date,mycursor_1.BETA);
End loop;
commit;
end;
It is working fine.
But I want to hard code some of the columns ( like flags ) which are not there in 1st table and load them into 2nd table.
In db2 we will give commands like
varSqlStatus=`db2 "declare mycurs cursor for select extract_name,from_date,to_date,BETA,'N','Y' from temp_table"`
varSqlStatus=`db2 "load from mycurs of cursor modified by identityignore insert into tmp_tab(col1,col2,col3,col5,col6,col7) nonrecoverable"`
But I want it in oracle 10g, Can any one help me in this.Have you tried either of the two options :
1. Modify the CURSOR itself :
cursor mycursor IS
SELECT extract_name,from_date,to_date,BETA,'N','Y' from temp_table where EXTRACT_NAME='GIFTCARD_DETAILS';2. Modify the INSERT statement itself :
insert into tmp_tab columns(col1,col2,col3,col5,col6,col7) values(mycursor_1.EXTRACT_NAME,mycursor_1.from_date,mycursor_1.to_date,mycursor_1.BETA,'N','Y');
Maybe you are looking for
-
Everything on my iPhone 5s is not working. Please help.
All of a sudden, the safari app I was using just crashed. I tried to retart, but it wouldn't work. Then I noticed that the App Store, iTunes Store, and even Music app are also crashing upon opening! So after many more resets, it seemed like restor
-
Macbook air can't go to the internet when connected with hard disk
Hi, so my macbook air can't go to the internet everytime when it is connected with my hard disk. The wifi icon on the top right corner says my macbook is connected to my wifi but my macbook just can't go to the internet. I unplugged my hard disk and
-
Supplier Directory not updated with Released status after the trasnfer
Hello Experts, I need your help to resolve an issue. We are implementing SRM 5.0 with ROS Client and EBP Client in place to manage Supplier Self REgistration and EBP. When I trasnfer an accepted Supplier from ROS Client to EBP Client via OPI to creat
-
Is there a backup for contacts on Icloud?
I did a misstake when I installed my sons iPhone. I deleted contacts that came whit iCloud on my sons iPhone and now they are gone from my iPhone aswell. I need them back! Is there a backup in iCloud?
-
Candidate assessment shortlist for manager in e-recruitment
Hi all, Can anyone explain how a manager can view candidates against requisitions that they have raise. I am using service hrrcf_a_requi_monitor and can see all requisitions that have been raised by a manager. On the publications tab at the bottom of