带有重复键的MySql插入

时间:2013-01-21 13:19:44

标签: mysql

我有一个名为“csv_db”的数据库,其中包含一个名为“reportinc”的表。

该表包含以下列:

ID incidenteAperto daStatoCategoriaAreaSottoareaTitoloPrioritàData/ora aperturaData/Ora risoluzioneData/ora chiusuraInizio Interruzione di servizioFine interruzione di servizioConteggio riassegnazioniGruppo di assegnazioneAssegnatario,{ {1}},Risolto daGruppo risoluzioneChiuso daGruppo di chiusuraID interazioneId RemedyDescrizione,{{1 }},SoluzioneServizio InteressatoServizi InteressatiCI interessato

主要和唯一键是CI operativo

我需要每天从.CSV(逗号分隔)和:

导入
  1. 使用新值(Ultimo aggiornamento da也)
  2. 插入新行
  3. 更新列表中的现有行(如果存在)。
  4. 如果重复,我需要更新行,而不是追加。

    如何?

1 个答案:

答案 0 :(得分:1)

正如LOAD DATA INFILE Syntax所述:

  

如果指定REPLACE,则输入行将替换现有行。换句话说,主键或唯一索引的值与现有行的值相同。请参阅Section 13.2.8, “REPLACE Syntax”

因此:

LOAD DATA [LOCAL] INFILE '/path/to/csv'
    REPLACE
    INTO TABLE csv_db.reportinc
    [CHARACTER SET charset_name]
    FIELDS
        TERMINATED BY ','
        OPTIONALLY ENCLOSED BY '"'
    LINES
        TERMINATED BY '\r\n'
    [IGNORE 1 LINES]
    (`ID incidente`, `Aperto da`, `Stato`, `Categoria`, `Area`, `Sottoarea`,
     `Titolo`, `Priorità`, `Data/ora apertura`, `Data/Ora risoluzione`,
     `Data/ora chiusura`, `Inizio Interruzione di servizio`,
     `Fine interruzione di servizio`, `Conteggio riassegnazioni`,
     `Gruppo di assegnazione`, `Assegnatario`, `Risolto da`,
     `Gruppo risoluzione`, `Chiuso da`, `Gruppo di chiusura`,
     `ID interazione`, `Id Remedy`, `Descrizione`, `Soluzione`,
     `Servizio Interessato`, `Servizi Interessati`, `CI interessato`,
     `CI operativo`, `Ultimo aggiornamento da`)