2017-08-22 1 views
1
generiert

Ich bin ein CRM zu einem anderen CRM-System zu migrieren und ich versuche 5.000 Insert-Anweisungen in einer Tabelle ausführen, die Beziehungen zwischen 2 Entitäten erstellt (Firma> Mitarbeiter) jedoch in Das alte CRM einige Firmen/Mitarbeiter existieren nicht mehr und die Beziehung ist immer noch da.Führen Sie mehrere MySQL-Anweisungen und Protokollanweisungen, die Fehler

Also, wenn ich versuche, eine Beziehung mit einer der fehlenden Entitäten zu importieren, erhalte ich einen Fehler.

Ich möchte alle 5.000 Insert-Anweisungen ausführen und protokolliert WHICH Anweisungen erzeugt Fehler.

Gibt es eine Möglichkeit, dies zu tun? Ich benutze MySQL Workbench, aber ich kann es auch in der Befehlszeile tun, wenn das einfacher ist.

INSERT INTO `fb_civicrm`.`civicrm_relationship` (`contact_id_a`, `contact_id_b`, `relationship_type_id`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`) VALUES ((SELECT entity_id FROM fb_civicrm.civicrm_value_sugar_info_1 WHERE sugarcrmid_1 = 'e03a03ae-13d1-4bdb-799f-4fe7f3801f65' AND entity_id > 13451), (SELECT entity_id FROM fb_civicrm.civicrm_value_sugar_info_1 WHERE sugarcrmid_1 = '8ca77aa9-8bfc-2516-85ca-4fe7f2fa48bb' AND entity_id < 13452), '5', '1', '', '0', '0'); 

So A: Ich brauche eine Möglichkeit, meine Aussagen weiterlaufen, auch wenn ich eine Unterabfrage Fehler angezeigt (Bsp: contact_id_a kann nicht null sein)

und B: Ich brauche einen Weg, um die Ausgabe zu filtern, in MySQL-Workbench, um nur Fehler anzuzeigen.

((irrelevant auf die Frage, aber falls Sie sich fragen: Die erste ID ist die ID des alten Systems des Angestellten, und die zweite ist die ID der Firma im alten System. Ich benutze die < 13451 weil das alte System wiederholte IDs zwischen Mitarbeiter und Firma hatte (also eine Firma könnte ID 1 sein, und ein Benutzer könnte auch ID 1..both in der gleichen Tabelle sein ...) Und in meinem Import in das neue System alle Firmen sind unter ID 13451, und alle Mitarbeiter sind über die))

Antwort

0

Es ist nicht die beste Lösung sein könnte, so dass ich ermutige andere Menschen, andere zu schreiben, wenn sie im Sinne jeden haben, aber ich verwenden:

IFNULL zu führe meine Unterabfragen aus, die y erlauben ou, um zu prüfen, ob ein bestimmter Wert null ist (in diesem Fall das Ergebnis meiner Unterabfrage), und wenn es dann ist, ersetze den Wert durch etwas anderes. Was für mich ein Dummy-Benutzer war, der mit allen zerbrochenen Beziehungen verbunden war. Beispiel meiner Frage:

INSERT INTO `fb_civicrm`.`civicrm_relationship` (`contact_id_a`, `contact_id_b`, `relationship_type_id`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`) VALUES ((SELECT IFNULL((SELECT entity_id FROM fb_civicrm.civicrm_value_sugar_info_1 WHERE sugarcrmid_1 = 'a9a7ef90-f5c8-1f1d-b4c0-596c16ac363e' AND entity_id > 13451),'20459')), (SELECT IFNULL((SELECT entity_id FROM fb_civicrm.civicrm_value_sugar_info_1 WHERE sugarcrmid_1 = '974' AND entity_id < 13452),'20459')), '5', '1', '', '0', '0'); 
Verwandte Themen