如何使用loadinfile更新表?

2q5ifsrm  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(211)
$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更新数据库的现有记录。因此,我如何修改查询,以便它将用于更新记录。

41zrol4v

41zrol4v1#

我使用下面的代码更新数据库的现有记录。

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

但问题是在我的csv文件中只有两列。当我运行查询时,它更新了记录(仅投票列),但其他列已被清空。是否有必要将所有列名称与数据一起提供。。??

0kjbasz6

0kjbasz62#

必须为字段定义主键或唯一键,这些字段负责记录的相等性
你必须加上 REPLACE 关键字输入 LOAD INFILE 陈述

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

相关问题