通过在表上附加几百行来更新表

时间:2019-11-01 04:05:59

标签: mysql sql

因此,如果只需要添加几行,我想着的任务将很简单,但是我需要添加的几百行以CSV的形式存在文件。

基本上,在工作中发生的事情是有人关闭了为数据库提供一些数据的服务。因此,我需要使用此期间缺少的数据手动更新数据库。

我的计划是:

  • 将csv文件上传为另一个表
  • 以某种方式使用合并来追加行。

我的问题是:

  • 两个表中列的顺序不同。它们具有完全相同的列,但是它们的顺序不同。
  • 此外,sql表还有1个额外的列,这些列不存在于csv文件的表中。

当列的顺序不同,并且列数比原始表少1个时,我很好奇如何尝试“垂直”合并行。列名相同。

1 个答案:

答案 0 :(得分:1)

使用python pandas将值附加到mysql表中。

  1. 导入库

         import pandas as pd
         from sqlalchemy import create_engine
         import sqlalchemy
    
  2. 创建引擎和函数以转储数据。

       engine = sqlalchemy.create_engine("%s://%s:%s@%s:%s/%s" % (
       "mysql+pymysql",
       "username",
       "password",
       "ip",
        port,
       "mysql database name"
        ))
    
     def dump_to_sql(dump_df, relationship):
    
           '''
           Uses pandas.to_sql to dump directly into the DB
          '''
    
          global engine
          dump_df.to_sql(name=relationship, con=engine, if_exists='append', index=False,chunksize=1000)
    
  3. 将csv读取为熊猫数据框,并将其传递给函数。

        df=pd.read_csv('name_of_your_csv.csv')
        dump_to_sql(df,'name of your mysql table in which you want to upload')
    

注意:请确保您的csv与mysql表具有相同的列名。缺少的列将填充为空值。