ようになり、私は終わりました比較的単純な方法でこれを行う。それは、私はまだ誰かがMySQLでこれを行うより簡単で効率的な方法を持っているかどうかを知ることに興味があります(MariaDB 5.7)
私はホスト+ CVEで複写を捕捉するインデックスを持っています。私もcreateDate列とupdateDate列を持っています。 createDateはインポート時に自動的に更新され、updateDateはインポート時に自動的に更新されます。レコードupdateDateが以下のインポートプロセス中に発生した場合を除きます(GUIでレコードに実際に最後に触れた時刻を記録します)。
LOAD DATA LOCAL INFILE '/tmp/Example.csv' INTO TABLE ExampleImport
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
INSERT INTO ExampleTable (PluginID,CVE,CVSS,Risk,Host,Protocol,Port,Name,Synopsis,Description,Solution,SeeAlso,PluginOutPut)
SELECT PluginID, CVE, CVSS, Risk, Host, Protocol, Port, Name, Synopsis, Description, Solution, SeeAlso, PluginOutput
FROM ExampleImport
ON DUPLICATE KEY UPDATE ImportDate = CURRENT_TIMESTAMP, UpdateDate = UpdateDate;
UPDATE ExampleTable x4
INNER JOIN (SELECT Host, MAX(UpdateDate) MaxDate
FROM ExampleTable
GROUP BY Host
) x2 ON x4.Host = x2.Host
SET FixDate = CURDATE(), x4.UpdateDate = x4.UpdateDate
WHERE x4.UpdateDate < x2.MaxDate;
うーん、私には両方のファイルが名+ UIDが含まれている場合、それは一定の日付を更新してしまうように、これは見えますが、私は唯一のインポートが存在する名+ UIDを持っていない場合は、固定の日付を更新したいですデータベースに格納されます。スキャン結果の修復を考える – wahyzcrak