使用 SQL 从 VTiger 导出活动帐户 CSV
更新: 导出联系人而不是帐户的相关文章
虽然 VTiger 作为 CRM 工作得很好,但它的活动管理功能缺少最重要的功能之一:它不支持导出
本文旨在为技术导向的用户提供如何使用 SQL 查询执行该任务的指南。我们假设对 SQL 语法、MySQL 和 PHPMyAdmin 有基本了解。
我们示例的目标是导出帐户名称和电子邮件表。对于电子邮件,将使用主要电子邮件,除非它为空,在这种情况下使用次要电子邮件。
查询的输入是活动名称(在我们的示例中,这将是 MyCampaign)。
查询活动编号
活动编号是一个字符串,例如 CAM4 或 CAM9,存储在 vtiger_campaign 中。
SELECT campaign_no FROM vtiger_campaign WHERE `campaignname` = "MyCampaign"查找活动记录 ID
在活动帐户关系 n 对 n 关系表中,活动编号不直接使用 - 而是使用活动记录 ID。我们需要从 vtiger_modtracker_detail 查询它,它包含有关活动的元数据键值数据(除其他外)。其中一个 K-V 对包含活动标识符(键 campaign_no),而另一个包含记录 ID(键 record_id)。
SELECT postvalue FROM `vtiger_modtracker_detail` WHERE `id` = (SELECT `id` FROM `vtiger_modtracker_detail` WHERE postvalue = <<campaign number>> and fieldname = "campaign_no") AND fieldname = "record_id"完整查询:
SELECT postvalue FROM `vtiger_modtracker_detail` WHERE `id` = (SELECT `id` FROM `vtiger_modtracker_detail` WHERE postvalue = (SELECT campaign_no FROM vtiger_campaign WHERE `campaignname` = "MyCampaign") and fieldname = "campaign_no") AND fieldname = "record_id"此查询的结果是数字活动记录 ID,例如 315。
查询活动到帐户的关系
我们现在可以使用活动记录 ID 查询 n 对 n 表 vtiger_campaignaccountrel。还有其他类似的表用于潜在客户(vtiger_campaignleadrel)和联系人(vtiger_campaigncontrel)。
SELECT accountid FROM vtiger_campaignaccountrel WHERE `campaignid` = <<campaign record ID>>完整查询:
SELECT accountid FROM vtiger_campaignaccountrel WHERE `campaignid` = (SELECT postvalue FROM `vtiger_modtracker_detail` WHERE fieldname = "record_id" AND `id` = (SELECT `id` FROM `vtiger_modtracker_detail` WHERE postvalue = (SELECT campaign_no FROM vtiger_campaign WHERE `campaignname` = "MyCampaign") and fieldname = "campaign_no"))此查询的结果是与活动相关的帐户 ID 列表。顺序通常与 VTiger 中显示的相同。
查询帐户信息
使用帐户 ID 列表,我们可以在 vtiger_account 上 JOIN 查询帐户详细信息。注意如果你在上一步中使用了替代关系表,你需要为潜在客户或联系人使用适当的表。
SELECT acc.accountname AS "Name", COALESCE(acc.email1, acc.email2) AS "EMail" FROM vtiger_campaignaccountrel AS car JOIN vtiger_account acc ON (acc.accountid = car.accountid) WHERE `campaignid` =(SELECT postvalue FROM `vtiger_modtracker_detail` WHERE fieldname = "record_id" AND `id` = (SELECT `id` FROM `vtiger_modtracker_detail` WHERE postvalue = (SELECT campaign_no FROM vtiger_campaign WHERE `campaignname` = "MyCampaign") and fieldname = "campaign_no")) AND (acc.email1 <> '' OR acc.email2 <> '')注意除了 SELECT 列列表之外,还有一些特定于名称和电子邮件查询的方面:
COALESCE(acc.email1, acc.email2)如果email1为空则使用email2AND (email1 <> '' OR email2 <> '')忽略既没有设置email1也没有设置email2的帐户
如果你想要自定义列列表,你需要相应地修改它。
导出 CSV
在将查询输入到 PHPMyAdmin 等工具时,你可以点击Export按钮将结果导出为不同格式,包括 CSV 和 Excel。
虽然这可能不是最方便的选项,但它是一种非常灵活的生成和导出数据的方式。任何更方便的方式可能都不那么灵活。