2017-08-22 5 views
1

私はCRMを別のCRMシステムに移行していますが、2つのエンティティ間でリレーションシップを作成するテーブルに5,000の挿入文を実行しようとしています(Company> Employee) 古いCRMいくつかの企業/従業員はもはや存在していませんが、関係はまだそこにあります。エラーを生成した複数のMySQL文とログ文を実行します

エンティティの1つを含むリレーションシップをインポートしようとすると、エラーが発生します。

すべての5,000個のINSERTステートメントを実行し、WHICHステートメントで生成されたエラーのログを保持します。

これを行う方法はありますか?私はMySQL Workbenchを使用していますが、それが簡単な場合でもコマンドラインで実行できます。

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'); 

ので:私は、サブクエリのエラー(例:contact_id_aはnullにすることはできません)を取得しても、私の文の実行を継続するためにいくつかの方法が必要です

とB:私は出力をフィルタリングする方法が必要ですエラーのみを表示するMySQLワークベンチ。

(質問には関係ありませんが、最初のIDは従業員の旧システムのID、もう1つは旧システムの会社のIDです)< 13451古いシステムは従業員と会社の間で繰り返しIDを持っていたので(企業はID 1になり得、ユーザーはID 1でも同じテーブル内にある可能性があります...)そして、新しいシステムへのインポートでは、それが最善の解決策ではないかもしれないので、私は、彼らが心の中でいずれかを持っている場合は他人を投稿し、他の人を励ますが、私が使用

答えて

0

))ID 13451の下で、すべての従業員がその上で、次のとおりです。

IFNULLにサブクエリを実行すると、y特定の値がnull(この場合はサブクエリの結果)であるかどうかをチェックし、値がそれ以外のものに置き換えられているかどうかを調べます。私にとっては、壊れた関係につながっているダミーのユーザーでした。クエリのサンプル:

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'); 
関連する問題