Mark,

Perhaps I'm missing something... but it seems like you already have your
list to delete. Why are you comparing again? Why not just do:

DELETE FROM someDBTable
WHERE emailaddress IN ('# todelete#')



Using cfqueryparam of course :)

Is the list too large? Sometimes the driver will only handle n number of
items in a list - something like 16k I think.

-Mark


-----Original Message-----
From: i...@markleder.com i...@markleder.com [mailto:i...@markleder.com] 
Sent: Wednesday, July 17, 2013 9:02 AM
To: cf-talk
Subject: Compare Two Lists


Hi all,

Attempting to clean up a table with email records.  In addition to the
existing table of good and bad email addresses, I have a csv file with
addresses that would need to be matched up to the db table, then deleted (so
I just have good addresses).

Email addresses are properly formatted in both the db and in the csv, so I
won't have to deal with duplicate addresses or hang ups because of improper
formatting.  The db table has about 10,000 records.  The csv file has about
4,000 addresses that will need to be matched and then dropped from the db
table.  Each recordset only has email addresses, so we're only dealing with
one column.

I've been working with the following, but I'm not sure this is the best way
to go about it, or if it will function properly.  And, I'm not sure that the
ListGetAt or the delete "WHERE" clause will work.  Conceptually for some
reason I have a mental block about arrays.

Thanks for your advise.  Mark

========================

<!--- Get the existing db email addresses --->
<cfquery name="getTableAddresses" datasource="#dsnSQL#" username="#dsnUID#"
password="#dsnPWD#">
                SELECT emailaddress
                FROM someDBTable 
                ORDER BY emailaddress asc
</cfquery>

<!--- Get the addresses which are bad from the csv file --->
<cfhttp
        name="cleanedAddressestoDelete"
        method="get"
        url="http://www.somesite.com/file.csv";
/>
 
<cfset oldList = ValueList(getTableAddresses.emailaddress)>
<cfset todelete = ValueList(cleanedAddressestoDelete.emailaddress)>
        
<cfloop From="1" To="#ListLen(oldList)#" index="emailaddress">
  <cfif ListGetAt(oldList, emailaddress) EQ
ListGetAt(todelete,emailaddress)>
    <cfquery name="deleteAddress" datasource="#dsnSQL#" username="#dsnUID#"
password="#dsnPWD#">
                        DELETE FROM someDBTable 
                        WHERE emailaddress = "#todelete.emailaddress#"
                </cfquery>
  </cfif>
</cfloop> 



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:356203
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to