如何将信息添加到预先存在的数据库中的特定列

时间:2014-04-24 00:22:48

标签: php mysql database lamp

我有一个名为week1的数据库,其中包含以下列:age, address, voternum, voterhistory, status, gender, precinct, county, and zip5

表格中已包含voterhistory以外的所有行的信息!

我需要将名为 vhist 文本文件分别导入voterhistory列到第1周表的voternum相等的表中到 vhist 文本文件的voternum

文本文件中的多行可以放入voterhistory列,并且应以逗号分隔。

例如:

在第1周内,有一个人voternum = 1234 vhist 文本文件中有3条记录voternum = 1234

其中一个有voterhistory = 2011,一个有voterhistory = 2012,另一个有voterhistory = 2013

这意味着在导入 vhist 文本文件时,这3条记录应该导入到week1表的voterhistory列中,如下所示:2011, 2012, 2013

很抱歉,如果这听起来令人困惑,但这是我知道如何解释它的唯一方法。如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

在MySQL中我们有一个名为CONCAT_WS()的函数它基本上使用指定的分隔符连接字符串值。看看链接。

我会使用临时表将vhist加载到内存中。然后将表week1连接到临时表vhistory并根据键匹配更新week1。这使您无需在SQL连接中实现条件逻辑。

在代码中它看起来像这样,你可能需要稍微努力才能让它运行:

CREATE TEMPORARY TABLE vhistory  (
     voternum VARCHAR(10) NOT NULL
    , voterhistory VARCHAR(10)
   );

LOAD DATA LOCAL INFILE '/path/vhist.txt' INTO TABLE vhistory;


UPDATE week1 SET voterhistory=SELECT CONCAT_WS(SELECT ',',voterhistory FROM vhistory
WHERE week1-voternum = vhistory-voternum );

我没有运行此代码,因为我没有您的数据。