python - mysql 百万行数据从一张表导入到另一张表

标签 python mysql database

我有一个表,它有两百万行数据。对于每一行,它都有一个 body 列,它存储 JSON 格式的数据。例如:

表_a:

id user_id  body
1  1        {'tel': '13678031283', 'email': 'test@gmail.com', 'name': 'test'....}
2  2        {'tel' : '1567827126', 'age': '16'....}
......

我还有另一个表,名为 table_b:

表_b:

id     user_id    tel        email         name
1      1          13678019   test@qq.com   test1
2      2          15627378   test1@qq.com  test2  
.....

table_a有200万行数据,我想将table_a的所有数据导入到table_b,table_a的每一行都要处理。

我想这样处理:

for row in table_a_rows:
    result = process(row)
    insert result to table_b
.....

但我认为这不是一个好主意。有更好的方法吗?

最佳答案

您可以直接使用JSON_EXTRACT从table_a中选择您需要的数据。例如,获取电子邮件将如下所示:

mysql> SELECT JSON_EXTRACT(body, '$.email') from table_a;

因此,您可以将 table_a 中的所有数据直接替换到 table_b 中:

mysql> REPLACE INTO table_b SELECT user_id, 
JSON_EXTRACT(body, '$.tel'),
JSON_EXTRACT(body,'$.email'), 
JSON_EXTRACT(body,'$.name') from table_a

关于python - mysql 百万行数据从一张表导入到另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36258042/

相关文章:

php - 获取 20 个最频繁的数字对 (2/2) 和三元组 (3/3)

python - 在 Django 中,是否可以迁移任何特定的特定文件?

sql - PostgreSQL - 使用 SQL 模拟 for 循环和聚合

Python date.today 显示第二天

python - 使用另一列中的数据对行进行子集化

php - 用户的排名显示正确,但当我尝试显示国家排名时却显示不正确

mysql - 参数列表太长 - Apache

python - 如何将CSV文件中的数据加载到Python脚本中进行概率分析?

python - 根据纬度/经度和半径选择 geopandas 或 pandas 中的行

Java:按顺序比较三个不同的字段。像一个 SQL 数据库