将列表值插入不同的行,同时保留其他列的最新值

时间:2018-08-09 20:25:03

标签: python mysql sql

我有一个这样的数据已存储在文件中:

name    last_name     class
b        bc           ['1','2','3']

现在我想将其插入MySql中的表中,我希望输出如下所示:(id是一个自动递增字段)

id       name    last_name     class
1        b        bc           1
2        b        bc           2
3        b        bc           3

到目前为止,我能够提出以下代码,但是它将整个列表存储在一个单元格中:

result=('C://heli.csv') 
count=0
db = MySQLdb.connect("127.0.0.1", "root", "****", "myblog", local_infile=True,use_unicode=True, charset="utf8")
cursor = db.cursor()
cursor.execute("LOAD DATA LOCAL INFILE '%s' INTO TABLE dru FIELDS TERMINATED by '$' LINES TERMINATED BY '\n' (keyword,indication,name,dr_id,synonyms) SET id = NULL" % (result,))
db.commit()
count += 1
db.close()
print(count)

是否有可能像我感兴趣的那样分离出列表的值?

实际数据如下所示: coronary syndrome$for treatment $bivalirudin$['db00006', 'btd00076', 'expt03302', 'biod00076', 'db02351']$['bivalirudina', 'bivalirudinum', 'hirulog']

1 个答案:

答案 0 :(得分:0)

我最近在MySQL中做到了这一点。 绝对不是最佳解决方案,但是它将带您到达那里。

如果您可以将原始数据放入MySQL表中,则可以使用SubString分离出每个类,然后插入到新表中。

例如

select
   name,
   last_name,
   Substring_index(Substring_index(class, ',', 1), ',', -1) as class
from data;

将产生-

name    last_name     class
b        bc           1

完整代码在这里-

http://sqlfiddle.com/#!9/c40a01/1