选项卡分隔文件到 SQL 查询(批量更新)

Posted

技术标签:

【中文标题】选项卡分隔文件到 SQL 查询(批量更新)【英文标题】:Tabbed Delimited file to SQL queries (bulk update) 【发布时间】:2016-03-06 14:01:51 【问题描述】:

我有一个巨大的文件(超过 2000 行),其中包含以 .txt 文件形式存储的制表符分隔值。

我想使用该文件在 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;

我的所有价值观都是在哪里设置的。

然后删除新创建的表。

希望以后人们可以使用这种方法:)!

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于选项卡分隔文件到 SQL 查询(批量更新)的主要内容,如果未能解决你的问题,请参考以下文章

mssql sql高效关联子查询的update 批量更新

MS SQL 批量更新\插入

sql server有批量插入和批量更新的sql语句吗

mysql批量更新出错

使用列表参数批量插入/更新调用到 Dapper 中对数据库的单个操作/请求

MySQL 高级SQL操作(数据的增删改查)