Insert data from table1 with PK to remove duplicates from table2 without PK

There will probably be a simple solution to my issue although it is currently evading me. I have a table that contains 14 million rows. There are many duplicates within this table that I need to remove. I was hoping an old trick I used in MS Access would
help, this solution was to create an identical table and add a PK on the filed I wanted to remove the duplicates from. Then just copy+paste append from one table to the other and Access would just drop the rows that were duplicated. Very simple yet worked
quickly and effectively. Is there a quick way to do this in MS SQL as everything i've tried so far has failed. Any help would be greatly appreciated.
Ian

try below
create table source_table (
column1 int,
column2 varchar(32)
create table destination_table
column1 int primary key,
column2 varchar(32)
insert into source_table (column1, column2) values (1, 'VAL2');
insert into source_table (column1, column2) values (2, 'VAL3');
insert into source_table (column1, column2) values (3, 'VAL4');
insert into source_table (column1, column2) values (4, 'VAL5');
insert into source_table (column1, column2) values (4, 'VAL5');
insert into source_table (column1, column2) values (4, 'VAL5');
GO
-- simple method
WITH CTE AS
select
ROW_NUMBER() OVER (partition by column1 ORDER BY column2) rno, column1, column2
from source_table )
insert into destination_table(column1, column2)
select column1, column2 from CTE where rno =1
-- inserting in while loop little chunks(500000), you can reduce if you want
Declare @startid int =0, @totalrecords int = 14000000, @count int = 500000
while(@startid <= @totalrecords)
begin
WITH CTE AS
select
ROW_NUMBER() OVER (partition by column1 ORDER BY column2) rno, column1, column2
from source_table where column1 between @startid and @startid+@count)
insert into destination_table(column1, column2)
select column1, column2 from CTE where rno =1
Print convert(varchar , @startid+@count)+ ' processed' -- indication while running
set @startid = @startid+@count
end
Thanks
Saravana Kumar C

Similar Messages

  • Cannot insert data from local database into remote database using subquery

    I have two oracle databases on different host.
    One is version 8i in Host A and the other is 9i in Host B.
    First, I try to create a dblink in 8i to 9i, but it fail.
    Then, I create a dblink in 9i to 8i, it success.
    I have already tried some select statement in 9i to view the table in 8i, which is success and that means the dblink is really work.
    The sql statement is like
    Select * from table1@hostA
    Then I have tried running some INSERT statement in 9i, which is copy data from table 1 in 8i to table 2 in 8i, both tables are in 8i. The sql statement is like
    Insert INTO table2@hostA(field1, field2)
    select field1, field2
    from table1@hostA
    This also success.
    Also, I have tried to use the following INSERT statement
    Insert INTO table2@hostA(field1, field2) values ('XXX', 'XXX)
    This also success.
    However, when I try to insert data from table in 9i to table in 8i using the following INSERT statement, it failed.
    Insert INTO table2@hostA(field1, field2)
    select field1, field2
    from table1
    The statement can execute, but all the rows inserted with every field value equal to NULL. I have tried to run the select part, it can return the data. But when I run the INSERT statement above, the value inserted into table2 is all equal to NULL.
    One more thing, I discover that the databases are using different NLS_CHARACTERSET
    9i is AL32UTF8
    8i is WE8ISO8859P1
    Is this relevant to my problem?
    Does anyone know the solution about this problem?
    Thanks!!

    How is the best way to do this ?How much are you planning to send?
    You can use COPY command. Ensure that you have valid database link between two databases.
    Available options are:
    create - creates a new table. errors out if the destination table exists.
    replace - drop the destination table and re-creates with data.
    insert - inserts data if the destination table exists.
    append– appends data into an existing table.
    use set arraysize 5000 -The arraysize specifies the number of rows that SQL*Plus will retrieve from the database at one time.
    copy from scott/tiger@ORCL to scott/tiger@ORCL92 create new_emp using select * from emp;

  • How to Insert data from Table A to Table B

    Hi,
    I have to insert data from Table A into Table B.
    Table A is having 100 records and table B is having 10000 records.
    Condition is if data in Table A is not in table B then I have to insert into Table B or else I have to skip that.
    Can anyone help me with sample code.
    Thanks in advance and points are awarded for usefull answers.
    Thanks,
    Kumar.

    Hello Kumar
    Assuming that tables A and B have the same structure you can use the same logic as change documents are prepared. Assuming both of your itabs are of structure struc_a. Then define the following type:
    TYPES: BEGIN OF ty_s_itab_di. 
    INCLUDE TYPE struc_a.
    TYPES: CHIND  TYPE bu_chind.
    TYPES: END OF ty_s_itab_di.
    TYPES: ty_t_itab_di  TYPE STANDARD TABLE OF ty_s_itab_di                     
    WITH DEFAULT KEY.
    DATA:    gt_itab_old  TYPE ty_t_itab_di,
    gt_itab_new TYPE ty_t_itab_di.
    Fill itabs gt_Itab_old with the corresponding data of itab1 and gt_itab_new with the corresponding data of itab2.
    Very important: sort you itabs either by all key fields or by all fields.
    Call function <b>CHANGEDOCUMENT_PREPARE_TABLES</b> with the following parameters:
    - CHECK_INDICATOR = ' '
    - TABLE_NEW = gt_Itab_new
    - TABLE_OLD = gt_itab_old
    The function module will remove identical lines from both itabs. New entries in gt_itab_New will have CHIND = 'I' and deleted entries in gt_itab_old will have CHIND = 'D'. Modified entries are indicated by CHIND = 'U'.
    Read the documentation of the function module and play around with it. You will see that this a quite easy yet powerful approach for comparing itabs.
    Regards
    Uwe

  • Is it possible to insert data from a .txt file onto a form list?

    Hello everyone i have a question and really hope someone can help me out...
    I have made a form list in acces but now i want the option to insert data from a .txt automatically to that list in shaprepoint.. is this possible????
    * I forgot to say that i cannot use any third party software or powershell becauseof the limitations that i have in the comapny..

    If it's in Access, than you can consider linking this to your SharePoint List. I'm not sure what sort of options you'll have with just a text file.
    You might consider replacing that text file with an Excel Sheet and uploading it to the list with this Excel add-in
    http://www.microsoft.com/en-us/download/details.aspx?id=9345
    Steven Andrews
    SharePoint Business Analyst: LiveNation Entertainment
    Blog: baron72.wordpress.com
    Twitter: Follow @backpackerd00d
    My Wiki Articles:
    CodePlex Corner Series
    Please remember to mark your question as "answered" if this solves (or helps) your problem.

  • How to Insert data from notepad to Table

    Hi,
    I have one table with nodata.i need to insert data into table.but i have records in one notepad.if i enter manually
    like using insert statement it will take more time.
    Any one know insert data from notepad to table or i need sql script that will use for all the records.Here im using sqldeveloper.

    Hi dude,
    We can use below 2 types.
    1) Sql loader
    2) utl file
    SQL*Loader utility?
    One can load data into an Oracle database by using the sqlldr (sqlload on some platforms) utility. Invoke the utility without arguments to get a list of available parameters. Look at the following example:
    sqlldr username@server/password control=loader.ctl
    sqlldr username/password@server control=loader.ctlThis sample control file (loader.ctl) will load an external data file containing delimited data:
    load data
    infile 'c:\data\mydata.csv'
    into table emp
    fields terminated by "," optionally enclosed by '"'           
    ( empno, empname, sal, deptno )
    {code}
    The mydata.csv file may look like this:
    {code}
    10001,"Scott Tiger", 1000, 40
    10002,"Frank Naude", 500, 20
    {code}
    Optionally, you can work with tabulation delimited files by using one of the following syntaxes:
    {code}
    fields terminated by "\t"
    fields terminated by X'09'
    {code}
    Additionally, if your file was in Unicode, you could make the following addition.
    {code}
    load data
    CHARACTERSET UTF16
    infile 'c:\data\mydata.csv'
    into table emp
    fields terminated by "," optionally enclosed by '"'           
    ( empno, empname, sal, deptno )Another Sample control file with in-line data formatted as fix length records. The trick is to specify "*" as the name of the data file, and use BEGINDATA to start the data section in the control file:
    load data
    infile *
    replace
    into table departments
    (  dept     position (02:05) char(4),
        deptname position (08:27) char(20)
    begindata
    COSC  COMPUTER SCIENCE
    ENGL  ENGLISH LITERATURE
    MATH  MATHEMATICS
    POLY  POLITICAL SCIENCEPlease refer the below link.. it will useful for you.
    http://psoug.org/reference/sqlloader.html
    http://docs.oracle.com/cd/B10500_01/server.920/a96652/ch05.htm
    Regards,
    N.Senthil.

  • How to insert Data from a function on server A into a table on Server B.

    Hi,
    I have a function which is like this
    DECLARE @oldmax bigint, @newmax bigint
    SELECT @oldmax = max(exportTimestamp) FROM EXPORT_TIMESTAMPS
    IF @oldmax IS NULL
    SET @oldmax = 0
    SELECT * FROM ServerA.TableA.fnExportTrafficTS(@oldmax) ORDER BY storeID, TrafDate
    SELECT @newmax = max(timestamp) FROM TRAFFIC t
    IF @newmax > @oldmax
    INSERT INTO EXPORT_TIMESTAMPS
    VALUES(@newmax, GETDATE())
    And now i need to insert the data coming out of this function into ServerB Table B
    And the column names and everything coming out of the function is the same columns in Table B.So, no need to worry there.
    I have never worked with inserting data from function through linked server.
    Can someone please help me with this?
    Thanks,
    Sujith

    Well, first of all, your table structure doesn't match the structure of returned table by your table-valued function.
    This is what table valued function returns:
    [storeID] varchar(32) default('noRefID'),
    [TrafDate] [datetime] default(NULL),
    [QtyTraffic] [float] default(0)
    And this is what your table structure is:
    [tUTL_JobLogging_Key] [int] NOT NULL,
    [StoreId] [varchar](10) NULL,
    [TrafDate] [datetime] NULL,
    [Visits] [numeric](8, 2) NULL
    Apart from different size for the StoreID and using float vs. numeric and different name for the last column, there is one extra column in your table.
    So, this is the first problem you need to correct.
    Also, please post how exactly you're calling your procedure? E.g. the procedure has 2 parameters, but the values of them are not used as you're calculating them in the code. So, I assume they should not be parameters for the procedure.
    For every expert, there is an equal and opposite expert. - Becker's Law
    My blog
    My TechNet articles

  • Insert data from java to oracle object created

    Hi
    How can i insert data from java to table test with column LIST_QRY_RES_DN_MEMBER_INFO as below after create object type
    CREATE OR REPLACE TYPE QRY_RES_SERVICE_VALUES AS OBJECT (
      PARAMETER_CODE            VARCHAR2(60),
      PARAMETER_VALUE           VARCHAR2(60)
    CREATE OR REPLACE TYPE LIST_QRY_RES_SERVICE_VALUES AS TABLE OF QRY_RES_SERVICE_VALUES;
    CREATE OR REPLACE TYPE QRY_RES_OPTIONS AS OBJECT (
      SERVICE_CODE            VARCHAR2(60),
      SERVICE_VALUE           LIST_QRY_RES_SERVICE_VALUES 
    CREATE OR REPLACE TYPE LIST_QRY_RES_OPTIONS AS TABLE OF QRY_RES_OPTIONS;
    CREATE OR REPLACE TYPE QRY_RES_MEMBER_INFO AS OBJECT (
      VARIABLE_CODE            VARCHAR2(60),
      VARIABLE_VALUE           VARCHAR2(120)
    CREATE OR REPLACE TYPE LIST_QRY_RES_MEMBER_INFO AS TABLE OF QRY_RES_MEMBER_INFO;
    CREATE OR REPLACE TYPE QRY_RES_DN_MEMBER_INFO AS OBJECT (
      DN                       VARCHAR2(60),
      MEMBER_INFO              LIST_QRY_RES_MEMBER_INFO,
      OPTIONS                  LIST_QRY_RES_OPTIONS
    CREATE OR REPLACE TYPE LIST_QRY_RES_DN_MEMBER_INFO AS TABLE OF QRY_RES_DN_MEMBER_INFO;
    CREATE TABLE test(
    DN_MEMBER_INFO          LIST_QRY_RES_DN_MEMBER_INFO,
    NESTED TABLE DN_MEMBER_INFO STORE AS LIST_QRY_RES_DN_MEMBER_TAB
        (NESTED TABLE MEMBER_INFO STORE AS MEMBER_INFO_TAB,
         NESTED TABLE OPTIONS STORE AS LIST_QRY_RES_OPTIONS_TAB
            (NESTED TABLE SERVICE_VALUE STORE AS SERVICE_VALUE_TAB));

    It appears you are trying to store java objects (types) in a database rather than raw data (string, int, date types) that the object contains. If so, I don't think that ever really caught on. Most programmers store the raw data, then pull it out and populate a class. The problem with storing the object is that new versions of classes come out and your old version is stored in the database. If you just store the data, you don't have to worry about what version is in the database. You can populate the new version of the class with the same data.
    Also, others can use sql to query your data and use it for their own use independent of what you intended it for. I think most people use the (browser) based utility that comes with the database to create the tables, normalize them, set up primary keys, set up foreign keys, etc rather then run an sql statement as you did above.

  • Error Inserting Data from Procedure ODI 11g (No data)

    Hi everyone!
    I have a problem inserting data from a procedure, the procedure works "fine" (no errors), on the log counter shows the number of rows inserted, but, on the database rows does not exists, an easy sample is:
    TARGET: ORACLE
    insert into table_t
    (desc)
    values
    (:description)
    SOURCE: ORACLE
    select description from table_s
    I check (ODI), the conection (works fine), modules (works fine), "select from table" (works fine).
    I check (Database), inserting rows direct (works fine).
    What can i check?
    Thanks for your response.

    Hi
    Try below 2 things
    First
    In target:oracle
    insert into table_t
    (desc)
    values
    ('#descpt');
    Second
    In target:oracle
    insert into table_t
    (desc)
    values
    ('#Proc_Var');
    Note: For alias name (*descpt* ) or Project variable (*Proc_Var*) with # symbol and single quotes
    Regards,
    Phanikanth

  • How to insert data from access to sql server ?

    How to insert data from access to sql server ?
    Please help me
    thanks

    phamtrungkien wrote:
    How to insert data from access to sql server by JAVA?The first four words of my last post:
    masijade wrote:
    JDBC with two connectionsGet a resultset from the jdbc-odbc bridge access connection, cycle through it and add batch insert commands to the jdbc connection to sql server. Give it a try and if the code has an error, then post your code ans ask a question.
    The real question, though, is why you think it absolutely necessary to use Java for this.

  • Insert data from oracle  to sql server

    we have running R12.1.1 .
    our company wants to deploy some CRM Application with sql server database. Continuously we have to insert data ( some fields from some tables of Order Management module ) from ORACLE -----------> SQL Server
    My Questions are :
    1. What are possible methods to insert data from ORACLE -----------------> SQL Server ?
    2. What are pros and cons of each method ?
    3. What is performance over load of each method ?
    PLease share your valuable knowledge / ideas / suggestions
    thanks

    What is a maximal latency for data changed in Oracle come into MS SQL?
    this data will be updated in CRM after 24 hours.Does it mean that data replicated from Oracle will be updated in MS SQL and should be replicated back?
    i want to know more details about these APIs etc and middle layer.what API? In MS SQL you can use Linked server and write SQLs that select from Oracle tables via that linked server and insert/update/delete into MS SQL. You can organize these SQLs into T-SQL procedures and run them in jobs.
    Also you can use MS SQL replication, snapshot or transactional, which is ugly because it places triggers on Oracle tables. I doubt that this will be approved by app vendor.
    Also you can use Oracle Streams via Transparent Gateway for MS SQL, which will be quite heavy solution.
    Also, if real-time replication is needed, you can use "middle layer" Oracle Golden Gate, which may be quite pricy for 30 tables.
    Also, if real-time replication is needed, you can use 3-rd party middle layer like DataCurrents or others.

  • Inserting Data from Oracle to SQL Server on the Real Time Basis.

    Hi Everyone,
    I need to insert data from Oracle to SQL Server on the Real Time basis, we have to fetch data from oracle approx 20 tables, and each table has more than 30 Fields. I need to fetch data in every 15 mins.
    I have created a job using SQL SERVER Agent by writing insert queries for all the tables with conditions that no rows will be inserted which is already in SQL. note that this job is taking only 1 min to execute.
    But in this way our SQL Server getting hanged and it giving problems to other application running in the SQL SERVER.
    So i m requesting all of you that what is the best way to insert huge amount of data on the real time basis.
    Thanx in Advance.

    1) Create Linked server 
    2) insert data using openquery  and set job in sql agent
    3) run job after 15 minutes

  • Insert data from one form to another table

    I have a form which of course insert data into table1, i created a process within this form and include a sql statement to achieve this for me. My thoughts are this will take whatever is the value from the form and insert it into table2.
    INSERT INTO ML_LIST (ML_TITLE,ML_LASTNAME)
    VALUES
    (P20_SSR_TITLE, P20_SSR_LASTNAME);
    My error is column not allowed here
    Any suggestions

    I used the following
    Begin
    INSERT INTO ML_LIST (ML_TITLE,ML_LASTNAME)
    VALUES
    (:P20_SSR_TITLE,:P20_SSR_LASTNAME);
    End;

  • How to insert data from JTable to mysql Table....

    hello everybody
    i need help about how to insert data from JTable to mysql table... i know about how to create Table model...facing problem about how to insert data from JTable to mysql table....any helping link or code ... ill be thankfulll....for giving me solution...

    table1.getValueAt(table1.getSelectedRow(),0)you are getting the value of a selected row... or if you want you can just use a loop..
    for(.....){
    table1.getValueAt(x,y);
    }I think you know INSERT STATEMENT.. here on it just string concat
    sample e.g. (This not insert)
    "delete from accrule " +
                    "where ruleid= " + tblRA.getValueAt(tblRA.getSelectedRow(),0)+
                    " and accountname='"+tblRA.getValueAt(tblRA.getSelectedRow(),1)+"'"

  • [ECC6] Inserting data from internal table (deep structure) into db table

    Hi experts,
    I have a problem when inserting data from IT using deep structure into a database table. Please help:
    I have one database table with 2 columns ZTest (col1, col2). Col1 is key.
    In my program I have a deep structure t_screen using table type lvc_t_scol:
    In 4.6c systems, the INSERT statement works well but it does not work in ECC6 systems.
    DATA: BEGIN OF t_screen OCCURS 0,
            rec_count(3) TYPE n,
            col1 LIKE ZTest-col1,
            col2 LIKE ZTest-col2.
    DATA: ct TYPE lvc_t_scol.
    DATA: END   OF t_screen.
    t_screen-col1 = 'test1'.
    t_screen-col2 = 'test1'.
    APPEND t_screen.
    t_screen-col1 = 'test2'.
    t_screen-col2 = 'test2'.
    APPEND t_screen.
    INSERT ZTest FROM TABLE t_screen ACCEPTING DUPLICATE KEYS.
    Currently I have an idea using a temporary internal table with the same structure as ZTest. Use MOVE-CORRESPONDING statement to move data from t_screen table to temporary table before inserting --> It worked. But do you have any ideas without using temporary table?

    Hi
    There are a large number of stataments couldn't be supported in unicode system and so it doesn't allow to do it in ECC 6.
    U need to delete the deep structure from your defination:
    DATA: BEGIN OF t_screen OCCURS 0,
            rec_count(3) TYPE n,
            col1 LIKE ZTest-col1,
            col2 LIKE ZTest-col2.
    DATA: ct TYPE lvc_t_scol. "<-------- Error is here
    DATA: END   OF t_screen.
    So u need to use a structure like this to update your table:
    DATA: BEGIN OF T_ZTEST OCCURS 0,
            rec_count(3) TYPE n,
            col1 LIKE ZTest-col1,
            col2 LIKE ZTest-col2.
    DATA: END   OFT_ZTEST.
    Max

  • How to insert  data from different internal  table  into a data base table

    hi all,
             I want to insert a particular field in an internal table to a field in a data base table.Note that the fields in the internal table and database table are not of the same name since i need to insert data from different internal tables.can some one tell me how to do this?
    in short i want to do something like the foll:
    INSERT  INTO ZMIS_CODES-CODE VALUE '1'.
    *INSERT INTO ZMIS_CODES-COL1 VALUE DATA_MTD-AUFNR .(zmis_codes is the db table and data_mtd is the int.table)

    REPORT  ZINSERT.
    tables kna1.
    data: itab LIKE KNA1.
    data lv_kUNAG LIKE KNA1-KUNNR.
    lv_kuNAG =  '0000010223'.
    ITAB-kuNNR = lv_kuNAG.
    ITAB-name1 = 'XYZ'.
    INSERT INTO KNA1 VALUES ITAB.
    IF SY-SUBRC = 0.
    WRITE:/ 'SUCCESS'.
    ELSE.
    WRITE:/ 'FAILED'.
    ENDIF.
    Here lv_kunag is ref to kna1 kunnr passed in different name
    In internal table .
    Try and let me know if this logic dint work.

Maybe you are looking for

  • CTE CT-e não autorizado. Código de status 239, motivo: Rejeição: Cabeçalho - Versão do arquivo XML não suportado

    Boa tarde a todos, Já configuramos os cenários do CT-e para a versão 2.00, mas temos algumas notas com o seguinte erro: CT-e não autorizado. Código de status 239, motivo: Rejeição: Cabeçalho - Versão do arquivo XML não su mesmo reiniciando o processo

  • Migration from 10.1.3.3.0 to 11g Tp3 : tld issues please please help

    Hello All, I have migrated my 10.1.3.3.0 application to 11g Tp3, but it does not work first of all in my jsps, WEB-INF/struts-bean.tld is not a registered namespace and all my custom libraries with same page JAR for WEB-INF/lib/datatags.jar founr but

  • Custom Bios for DPC Latency gone?

    I have the P43 Neo and suffer from DPC Latency spikes, which is very annoying since I work with audio a lot. However, the link to the 'custom bios' in the following topic is not available anymore: https://forum-en.msi.com/index.php?topic=125206.0 Whe

  • Help on JSP Function

    Hi, I am writing follow. java function inside my JSP <jsp:useBean      id="inquiryBean" class = "com.bbh.actionworld.pagingcontrol.inquiry.Inquiry" scope = "session"> </jsp:useBean> <%      int sIndex = inquiryBean.getStartIndex();      int eIndex =

  • IPS shows Memory usage 80 % is that normal ?

    Hi there. I have a 2 5525x configured as active/standy and bot IPS modules configured with defaults there is no internet connection to them and no traffic passing thru , but IPS show memory usage 80% is that normal ?