Re: Add New Records Only!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>
> Ave,
>
> "Three: Insert everything and remove duplicates later."
>
> Out of the suggested options, this option is sounding the most sane
> attainable on my end. I don't have a complete grip on how to accomplish
> this, but certainly sounds feasible. Let me look at ways to achieve this.
>
> Thanks!
>

I'm not sure how live this data is, but it should be easy to do if you are
merely replicating and don't need this stuff all live all the time.

basically, query all databases, get all the data, and store in a temporary
database. Then query all the data in the temporary database and order by
your primary key. Save a copy of your primary key for each next row. If
the subsequent primary key is the same as the previous one, it is a
duplicate record and ignore it.

like this: (pseudo code)

$primary_key = "";
while(!eof())
{
   $record = get_next_record();

    if($record->primary_key != $primary_key)
    {
       store_new_record($record);
       $primary_key = $record->primary_key;
    }
}


}

> On 3/23/07 11:36 AM, "Mark" <markw@xxxxxxxxxxxxxx> wrote:
>
>> Rahul Sitaram Johari wrote:
>>
>> As far as I can see, there is probably only three ways to do this:
>>
>> One: Make sure your dbase system contains unique primary key capability,
>> and
>> use it to avoid duplicates.
>> Two: query for the row, if it isn't there insert it. (You'll have to
>> deal
>> with concurrency with locking or something)
>> Three: Insert everything and remove duplicates later.
>>
>>> Ave,
>>>
>>> Let me explain what I¹m trying to do. Unfortunately it¹s not a very
>>> simple
>>> Add/Update transaction.
>>> Basically I gather records from multiple mySQL tables and add them to a
>>> DBF
>>> (dbase) database.  I wrote a code which was able to accomplish this
>>> without any problems and the add_records goes very smooth.
>>>
>>> However, I have to modify this program now so that only ³New² records,
>>> i.e., records that have not yet been transferred, are added into the
>>> DBF.
>>> In other words, any records that are being added, which already exist
>>> in
>>> the DBF, should not be added.
>>>
>>> If it were just adding records from one mySQL to another mySQL, I could
>>> easily use INSERT IGNORE or the Unique Key fundamental ­ however, since
>>> I¹m adding from multiple mySQL tables into DBF, I¹m not sure how to go
>>> about doing this.
>>>
>>> Here¹s my code that takes records from multiple mySQL tables and adds
>>> them
>>> to a DBF.
>>>
>>> // define the array with mySQL Table Names & Identifier
>>>     $tChoice = array(
>>>        "lodispo" => "VB",
>>>        "lodispo_osma" => "ATL",
>>>        "lodispo_osmh" => "HOU",
>>>        "lodispo_osmn" => "NSV",
>>>        "lodispo_osmp" => "PAA",
>>>        "lodispo_osmj" => "JAX",
>>>        "lodispo_osmt" => "TPA",
>>>        "lodispo_dmam" => "MET",
>>>        "lodispo_osmf" => "FTM",
>>>        "lodispo_hfglend" => "GLEND",
>>>           "lodispo_hfmesa" => "MESA",
>>>           "lodispo_hfphenx" => "PHENX",
>>>     );
>>>
>>>
>>>     // open DBF in read-write mode
>>>     $db2 = dbase_open($theDBFfile, 2);
>>>     if (!$db2) {
>>>       echo "<BR><BR><STRONG>Fatal Error:</STRONG> Unable to open
>>> database<BR><BR>";
>>>       exit;
>>>     }
>>>
>>>     else {
>>>
>>>             // Let's Run Array Loops!
>>>             foreach ($tChoice as $tblQ => $bxQ) {
>>>
>>>             // connect to mySQL tables one by one
>>>             mysql_select_db($database_imslead_transfer,
>>>             $imslead_transfer); $query_loDispo = "SELECT * FROM $tblQ";
>>>             $loDispo = mysql_query($query_loDispo, $imslead_transfer)
>>> or
>>> die(mysql_error());
>>>             $row_loDispo = mysql_fetch_assoc($loDispo);
>>>             $totalRows_loDispo = mysql_num_rows($loDispo);
>>>
>>>             // write mySql data to Dbf
>>>             do {
>>>                  dbase_add_record($db2, array(
>>>                      $row_loDispo['phone'],
>>>                      $row_loDispo['comments'],
>>>                      $row_loDispo['starttime'],
>>>                      $row_loDispo['endtime'],
>>>                      $row_loDispo['dispo'],
>>>                      $row_loDispo['loanofficer'],
>>>                      $row_loDispo['verifier'],
>>>                      $bxQ));
>>>                  } while ($row_loDispo = mysql_fetch_assoc($loDispo));
>>>             }
>>>
>>>     dbase_close($db2);
>>>     }
>>>
>>> Any suggestions would be highly appreciated.
>>>
>>> Thanks,
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> Rahul Sitaram Johari
>>> CEO, Twenty Four Seventy Nine Inc.
>>>
>>> W: http://www.rahulsjohari.com
>>> E: sleepwalker@xxxxxxxxxxxxxxxx
>>>
>>> ³I morti non sono piu soli ... The dead are no longer lonely²
>
>
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux