не уверен, сколько информации я могу предоставить, поскольку это живая чувствительная база данных.
Я восстанавливаю код своего предшественника.
Существует файл VBS, который проверяет электронную почту из таблицы 1, использует оператор split после '@', чтобы получить домен, затем проверяет, существует ли этот домен в других таблицах.Если это так, извлеките некоторые поля из этих таблиц сопоставления, а затем обновите третью таблицу, в которой сопоставляется адрес электронной почты.
Насколько я могу судить, один из массивов / таблиц, созданных для сопоставления, имеет длину 20 000 записей.Однако скрипт запускается, затем завершается с ошибкой по определенному адресу электронной почты / номеру записи, ссылаясь на Неверный синтаксис рядом с '.'
Опять же, не слишком знаком с vbscript и довольно ржавый с моим SQL.Кто-нибудь может посоветовать, в чем может быть проблема?Возможно, это была проблема истечения времени ожидания запроса, но для сервера не установлено ограничение по времени для запросов.
Сценарий ниже:
'START - Delete
set rsDelete = conn.execute("DELETE FROM JofTest_emailTrackDump")
set rsDelete = nothing
'END - Delete
'START - Update
set rsUpdate = conn.execute("INSERT INTO JofTest_emailTrackDump (emailTrack_email) SELECT DISTINCT emailIP_emailAddress AS emailTrack_email FROM JofTest_emailIP WHERE emailIP_emailAddress <> '' AND emailIP_hide = 0 AND emailIP_emailAddress IS NOT NULL AND emailIP_emailAddress NOT IN (SELECT DISTINCT emailIP_emailAddress2 FROM ((SELECT DISTINCT rec_email_company AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_company <> '' AND rec_email_company IS NOT NULL) UNION (SELECT DISTINCT rec_email_direct AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_direct <> '' AND rec_email_direct IS NOT NULL) UNION (SELECT DISTINCT rec_email_additional AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_additional <> '' AND rec_email_additional IS NOT NULL) UNION (SELECT DISTINCT contact_email_primary AS emailIP_emailAddress2 FROM JofTest_crm_contacts_masters WHERE contact_email_primary <> '' AND contact_email_primary IS NOT NULL) ) A) ORDER BY emailIP_emailAddress ")
set rsUpdate = nothing
'END - Update
'START - Find Partial Match
set rsPartialList = conn.execute("SELECT DISTINCT emailIP_emailAddress AS emailTrack_email FROM JofTest_emailIP WHERE emailIP_emailAddress <> '' AND emailIP_hide = 0 AND emailIP_emailAddress IS NOT NULL AND emailIP_emailAddress NOT IN (SELECT DISTINCT emailIP_emailAddress2 FROM ((SELECT DISTINCT rec_email_company AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_company <> '' AND rec_email_company IS NOT NULL) UNION (SELECT DISTINCT rec_email_direct AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_direct <> '' AND rec_email_direct IS NOT NULL) UNION (SELECT DISTINCT rec_email_additional AS emailIP_emailAddress2 FROM JofTest_crm_company_master WHERE rec_email_additional <> '' AND rec_email_additional IS NOT NULL) UNION (SELECT DISTINCT contact_email_primary AS emailIP_emailAddress2 FROM JofTest_crm_contacts_masters WHERE contact_email_primary <> '' AND contact_email_primary IS NOT NULL) ) A) ORDER BY emailIP_emailAddress")
while not rsPartialList.eof
'START - Make Host
if instr(rsPartialList("emailTrack_email"), "@") > -1 then
arrHost = split(rsPartialList("emailTrack_email"), "@")
if ubound(arrHost) > 0 then
emailAddressHost = arrHost(1)
'START - Find Partial Match
set rsFindPartial = conn.execute("SELECT rec_id, rec_company FROM crm_company_masters LEFT JOIN crm_contacts_masters ON contact_recID = rec_id WHERE (rec_email_company LIKE '%" & emailAddressHost & "' OR rec_email_direct LIKE '%" & emailAddressHost & "' OR rec_email_additional LIKE '%" & emailAddressHost & "' OR contact_email_primary LIKE '%" & emailAddressHost & "')")
if not rsFindPartial.eof then
'START - Update Dump With Partial Match Info
set rsUpdatePartial = conn.execute("UPDATE emailTrackDump SET emailTrack_partialRecID = " & rsFindPartial("rec_id") & ", emailTrack_partialCompany = '" & rsFindPartial("rec_company") & "' WHERE emailTrack_email = '" & rsPartialList("emailTrack_email") & "'")
'END - Update Dump With Partial Match Info
varCount = varCount + 1
end If
rsFindPartial.close()
set rsFindPartial = nothing
'END - Find Partial Match
end if
end If
For Each field In arrHost
Wscript.Echo field
Next
'END - Make Host
rsPartialList.movenext()
wend
rsPartialList.close()
set rsPartialList = nothing
'END - Find Partial Match
'Close Connection
conn.close()
set conn = nothing
Ошибка в строке 33, символ 17 set rsUpdatePartial = conn.execute("UPDATE email....
РЕДАКТИРОВАТЬ - также удалив кусочки, я смог запустить код.Часть, которую я удалил, была секцией под названием Update Dump with Partial Match Info
, поэтому я должен предположить, что ошибка находится внутри нее.