从本地文件更新MySQL表

从本地文件更新MySQL表,mysql,sql,Mysql,Sql,我在数据库中有一个表,我想更新一个本地文件中脱机的列。文件本身有两列 对应于表中ID列的ID,以及 实际值 我已经能够使用 LOAD DATA INFILE 'file.txt' INTO TABLE table FIELDS TERMINATED BY ',' 但我不确定如何具体地插入值,使文件中的ID列与表中的ID列相连接。有人可以帮助您使用SQL语法吗?我建议您将数据加载到一个临时表中,然后使用插入。。。选择。。。在重复密钥更新时;例如: CREATE TEMPORARY TABLE

我在数据库中有一个表,我想更新一个本地文件中脱机的列。文件本身有两列

  • 对应于表中ID列的ID,以及
  • 实际值
  • 我已经能够使用

    LOAD DATA INFILE 'file.txt' INTO TABLE table
      FIELDS TERMINATED BY ','
    

    但我不确定如何具体地插入值,使文件中的ID列与表中的ID列相连接。有人可以帮助您使用SQL语法吗?

    我建议您将数据加载到一个临时表中,然后使用
    插入。。。选择。。。在重复密钥更新时
    ;例如:

    CREATE TEMPORARY TABLE temptable (
      id  INT UNSIGNED NOT NULL,
      val INT,
      PRIMARY KEY (id)
    ) ENGINE = MEMORY;
    
    LOAD DATA LOCAL INFILE '/path/to/file.txt' INTO temptable FIELDS TERMINATED BY ',';
    
    INSERT INTO my_table
    SELECT id, val FROM temptable
    ON DUPLICATE KEY UPDATE val = VALUES(val);
    
    DROP TEMPORARY TABLE temptable;
    

    另一种方式可能是

    因为您已经知道了表名,并且有ID和实际值。。。你能做的是。。。直接在文件中写入update语句,如

    update mytable set value_col = value where ID_col = ID;
    
    Second Update Statement
    
    Third Update statement
    
    .......
    
    将文件另存为
    *.sql
    like,
    updatescript.sql
    ,然后像

    mysql -h <hostname> -u root -p <your_db_name> < "E:/scripts/sql/updatescript.sql"
    
    mysql-h-u root-p<“E:/scripts/sql/updatescript.sql”
    
    这取决于行数, 如果是成百上千,则创建更新列脚本并运行它,但如果是大容量,则将该文件导入到新表中,并使用联接更新表,然后删除该表