Как обновить таблицу с помощью LOAD INFILE? - PullRequest
0 голосов
/ 03 октября 2018
$this->db->query("LOAD DATA LOCAL INFILE '".$file_path."' 

        INTO TABLE table1
        CHARACTER SET  utf8mb4
        FIELDS TERMINATED BY ','

        OPTIONALLY ENCLOSED BY  '\"' 
        LINES TERMINATED BY '\r\n' 

        IGNORE 1 LINES 

        (Email,Jurisdiction_Parish,Jurisdiction_Ward,Jurisdiction_Precinct,Personal_FirstName,
        Personal_MiddleName,Personal_LastName,Personal_NameSuffix,Residence_HouseNumber,Residence_HouseFraction,Residence_StreetDirection,
        Residence_StreetName,Residence_ApartmentNumber,Residence_City,Residence_State,Residence_ZipCode5,Residence_ZipCode4,Mail_Address1,
        Mail_Address2,Mail_City,Mail_State,Mail_ZipCode5,Mail_ZipCode4,Mail_Country,Personal_Sex,Personal_Race,Registration_PoliticalPartyCode,
        Personal_Age,Registration_VoterStatus,Registration_Date,Registration_Number,Personal_Phone,LastVoted,Residence_WalkListOrder,
        Favorability,Yard_Sign,Comments,Personal_NameOrder,voted,Rating,Custom_Variable1,Custom_Variable2,Custom_Variable3)
        SET cid =".$cid.", csvsheet_id=".$csvsheet_id
        );

Приведенный выше код для вставки данных CSV в базу данных, но я хочу обновить существующие записи базы данных из CSV.Итак, как я могу изменить запрос, чтобы он работал для ОБНОВЛЕНИЯ записей.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я использовал приведенный ниже код для обновления существующих записей базы данных.

 LOAD DATA LOCAL INFILE 'myfile' 
 REPLACE
 INTO TABLE table1
 CHARACTER SET  utf8mb4

Но проблема в том, что в моем файле CSV у меня есть только два столбца.Когда я запускаю запрос, он обновляет записи (только для столбца с голосованием), но другие столбцы не отображаются.Необходимо ли также указывать все названия столбцов с данными .. ??

0 голосов
/ 03 октября 2018
  1. Вы должны определить первичный или уникальный ключ для полей, которые отвечают за равенство записей
  2. Вы должны добавить ключевое слово REPLACE в LOAD INFILE оператор
LOAD DATA LOCAL INFILE 'myfile' 
  REPLACE
  INTO TABLE table1
  CHARACTER SET  utf8mb4
  ................
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...