2015-12-02 30 views
0

我有一个巨大的文件(超过2000行)的选项卡分隔值存储为.txt文件。选项卡分隔文件到SQL查询(批量更新)

我想使用该文件来更新我的数据库项在phpmyadmin中。

有没有正确的方法来将这些行转换为sql语句(mysql)? 例如:

1 2 nameX descriptionY tagKeywords metatagTitleX metadescriptionX metaKeywordsX 

会变成这样:

UPDATE table SET name=nameX, description=descriptionY, tag=tagKeywords, meta_title=metatagTitleX, meta_description=metadescriptionX, meta_keywords=metaKeywordsX WHERE id=1 AND languague_id=2; 

我尝试使用此正则表达式:^.*?(?=\t)但这只是发现了一个行第一次出现的匹配。 怎样才能“记住”正则表达式能够做出替换的内容?

或者如果有另一种更简单的方式让我知道。

回答

1

我解决它通过创建一个表:

CREATE TABLE your_temp_table LIKE your_table;

然后导入的数据(在新创建的表),在phpMyAdmin的进口标签说是用标签(\ t)的csv文件分隔列。

然后进行更新查询:

UPDATE your_table 
INNER JOIN your_temp_table on your_temp_table.id = your_table.id 
SET your_table.quantity = your_temp_table.quantity; 

哪里人我的值进行设置。

然后删除新创建的表。

我希望人们可以在将来使用这种方法:)!

0

如果此文本文件具有相同结构的所有行,那么也许您可以在每个选项卡和写入输出文件之前使用选项卡计数并插入查询字符串关键字。 或尝试使用xls文件将具有正确字符串值的列放入行中。