Mysql 通过追加数百行更新表

Mysql 通过追加数百行更新表,mysql,sql,Mysql,Sql,因此,如果只需要添加几行,那么我想到的任务会很简单,但我需要添加几百行,这是以CSV文件的形式存在的 基本上,工作中发生的事情是有人关闭了一项向数据库提供数据的服务。因此,我需要手动更新数据库中缺少的这段时间的数据 我的计划是: 将csv文件上载为另一个表 以某种方式使用附加行的合并 我的问题是: 两个表中列的顺序不同。它们有完全相同的列,但顺序不同 此外,sql表还有一个额外的列,csv文件中的表中没有 我很好奇,当列的顺序不同时,当我的列比原始表少1列时,我应该如何尝试行的“垂直”合

因此,如果只需要添加几行,那么我想到的任务会很简单,但我需要添加几百行,这是以
CSV
文件的形式存在的

基本上,工作中发生的事情是有人关闭了一项向数据库提供数据的服务。因此,我需要手动更新数据库中缺少的这段时间的数据

我的计划是:

  • 将csv文件上载为另一个表
  • 以某种方式使用附加行的合并
我的问题是:

  • 两个表中列的顺序不同。它们有完全相同的列,但顺序不同
  • 此外,sql表还有一个额外的列,csv文件中的表中没有

我很好奇,当列的顺序不同时,当我的列比原始表少1列时,我应该如何尝试行的“垂直”合并。列名在其他方面是相同的。

使用python将值附加到mysql表中

  • 导入库

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

       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)
    
  • 将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表相同的列名。缺少的列将用空值填充。

    您知道SQL吗?我这样问是因为表定义中列的顺序没有意义。您总是为列命名,因此它们在表定义中的顺序无关紧要。您讨论的是合并,您讨论的是追加。是哪一个?Append仅仅意味着在末尾插入新行,这并不困难。合并意味着某些行已经存在(由一个或多个列的值标识),并且应该更新现有行,这样做可能需要更多的工作。至于额外的专栏,当我们不知道该专栏是什么,它的意思是什么的时候,我们怎么回答这个问题呢?嘿,安德烈亚斯,你说得对,我是说附加。因为我所做的就是添加新行。缺少的列是没有意义的,因为我可以在插入的新行中使用空白值,这样我就看不出问题了。你有什么具体问题?使用声明。谢谢!我的问题是,我只单独更新了行,并且使用了包含顺序写出列名的方法。我想知道是否有办法将csv上传到mysql中,然后根据公共列自动将其所有行追加到另一个表中。