【问题标题】:SQL query to add column from excel sheet to mysql table?SQL查询将列从excel表添加到mysql表?
【发布时间】:2017-05-16 21:39:00
【问题描述】:

mySQL 数据库中的表与excel 表中的表相同。但是,工作表有一个额外的列,我希望在 mysql 表中添加。

表中的列说 abc: id,name,dob 表格中的列说 pqr: id,name,dob,gender

现在,我希望将 excel 表中的性别列添加到与特定 id 对应的表中,而不删除表。

LOAD DATA INFILE '/path/pqr.csv' 
INTO TABLE abc
FIELDS TERMINATED BY ',' 
       OPTIONALLY ENCLOSED BY '"'
LINES  TERMINATED BY '\n'

但这将用于新的导入而不是更新表。

【问题讨论】:

  • 您真的应该在 SQL 端重新创建表,然后将文件加载暂存到暂存表中,然后只需使用从暂存表到事实表的 insert into 语句。希望对您有所帮助 - 在您开始使用该列的那一天之前,您有一组空白的性别行
  • 或者您可以更改表 - 添加列,暂存另一个包含记录 ID 和性别值的表,然后运行 ​​set update set 语句以根据 ID 设置性别值临时表

标签: mysql sql excel


【解决方案1】:

表格中的列说 abc: id,name,dob

工作表中的列说 pqr: id,name,dob,gender

创建一个临时表temporary,将数据导入该表,然后修改abc添加新列gender,然后使用temporary更新abc中的性别,最后删除temporary .

CREATE TABLE temporary (id int, name varchar(100), dob date, gender char(1), PRIMARY KEY (id));

LOAD DATA INFILE '/path/pqr.csv'  
INTO TABLE temporary  
FIELDS TERMINATED BY ','  
       OPTIONALLY ENCLOSED BY '"'  
LINES  TERMINATED BY '\n'  

ALTER TABLE abc ADD COLUMN (gender varchar(1));

UPDATE abc  
SET gender = (SELECT gender FROM temporary WHERE temporary.id = abc.id);

-- some DBs need a FROM clause, use either one which works
UPDATE abc  
SET gender = (SELECT gender FROM temporary WHERE temporary.id = abc.id)  
FROM temporary;

SELECT * FROM abc;

DROP TABLE temporary;

在不知道您使用的是哪个 DBMS 的情况下,答案再具体不过了。

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 2015-10-17
    • 2016-02-04
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多