Exportieren von Kampagnen-Konto-CSVs aus VTiger mit SQL
Update: Verwandter Beitrag zum Exportieren von Kontakten anstelle von Konten
Obwohl VTiger als CRM hervorragend funktioniert, fehlt der Kampagnenverwaltung eine der wichtigsten Funktionen: Sie unterstützt keinen Export
Dieser Beitrag soll technisch orientierten Benutzern eine Anleitung bieten, wie sie SQL-Abfragen verwenden können, um diese Aufgabe auszuführen. Wir setzen Grundkenntnisse in SQL-Syntax, MySQL und PHPMyAdmin voraus.
Das Ziel unseres Beispiels ist der Export einer Tabelle mit Kontoname und E-Mail. Für die E-Mail wird die primäre E-Mail verwendet, es sei denn, sie ist leer, in welchem Fall die sekundäre E-Mail verwendet wird.
Die Eingabe für die Abfrage ist der Kampagnenname (in unserem Beispiel MyCampaign).
Abfragen der Kampagnennummer
Die Kampagnennummer ist ein String, z.B. CAM4 oder CAM9, der in vtiger_campaign gespeichert ist.
SELECT campaign_no FROM vtiger_campaign WHERE `campaignname` = "MyCampaign"Finden der Kampagnen-Datensatz-ID
In der n-zu-n-Relationstabelle für Kampagnen-Konto-Beziehungen wird nicht die Kampagnennummer direkt verwendet — stattdessen wird die Kampagnen-Datensatz-ID verwendet. Wir müssen diese aus vtiger_modtracker_detail abfragen, die Metadaten-Schlüssel-Wert-Paare über Kampagnen enthalten (unter anderem). Eines der K-V-Paare enthält den Kampagnenbezeichner (Schlüssel campaign_no), während ein anderes die Datensatz-ID enthält (Schlüssel 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"Vollständige Abfrage:
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"Das Ergebnis dieser Abfrage ist die numerische Kampagnen-Datensatz-ID, z.B. 315.
Abfragen der Kampagnen-zu-Konto-Beziehungen
Wir können nun die Kampagnen-Datensatz-ID verwenden, um die n-zu-n-Tabelle vtiger_campaignaccountrel abzufragen. Es gibt andere, ähnliche Tabellen für Leads (vtiger_campaignleadrel) und Kontakte (vtiger_campaigncontrel).
SELECT accountid FROM vtiger_campaignaccountrel WHERE `campaignid` = <<campaign record ID>>Vollständige Abfrage:
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"))Das Ergebnis dieser Abfrage ist eine Liste von Konto-IDs, die mit der Kampagne verknüpft sind. Die Reihenfolge entspricht normalerweise der in VTiger angezeigten.
Abfragen von Konto-Informationen
Mit der Liste der Konto-IDs können wir einen JOIN auf vtiger_account durchführen, um die Kontodetails abzufragen. Beachte, dass du die entsprechende Tabelle für Leads oder Kontakte verwenden musst, wenn du im vorherigen Schritt eine alternative Relationstabelle verwendet hast.
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 <> '')Beachte, dass neben der SELECT-Spaltenliste einige Aspekte spezifisch für die Name- und E-Mail-Abfrage sind:
COALESCE(acc.email1, acc.email2)verwendetemail2, wennemail1leer istAND (email1 <> '' OR email2 <> '')ignoriert Konten, die wederemail1nochemail2gesetzt haben
Wenn du eine benutzerdefinierte Spaltenliste möchtest, musst du dies entsprechend anpassen.
CSV exportieren
Beim Eingeben der Abfrage in ein Tool wie PHPMyAdmin kannst du auf die Schaltfläche Export klicken, um das Ergebnis in verschiedene Formate zu exportieren, einschließlich CSV und Excel.
Dies ist zwar möglicherweise nicht die bequemste Option, aber eine sehr flexible Möglichkeit, die Daten zu generieren und zu exportieren. Bequemere Methoden sind wahrscheinlich weniger flexibel.