2017-05-09 66 views
0

mySQL数据库中的表格与Excel表格中的表格相同。但是,该表有一个额外的列,我希望在MySQL表中添加。SQL查询将excel表中的列添加到mysql表中?

列在表说ABC:ID,姓名,出生日期 列在表说PQR:ID,姓名,出生日期,性别

现在,我希望从Excel工作表中的性别栏添加到与我的表没有丢掉表格的特定ID。

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

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

+0

您应该重新创建SQL端的表,然后将文件加载到临时表中,然后使用从临时表到事实表的insert into语句。希望有所帮助 - 在不删除的情况下,直到您开始使用列 – jimmy8ball

+1

的那一天您才有一组空白的行,或者您可以更改表 - 添加列,为包含记录标识和性别值的另一个表创建阶段,然后运行一套set update set语句,用于根据临时表中的ID设置性别值 – jimmy8ball

回答

0

列在表说ABC:ID,姓名,出生日期

列在表说PQR:ID,姓名,出生日期,性别

创建临时表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,答案不能更具体。