将csv中的行插入到mysql数据库中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将csv中的行插入到mysql数据库中相关的知识,希望对你有一定的参考价值。

我正在提取给定文件夹中的所有csv,并尝试将它们逐行插入到mysql数据库中。这是我的代码:

def upload_to_db(table, folder):

print('Uploading...', end='')

files = grab_files(folder)

# Connect to dfeventlogger database
connection = pymysql.connect(**eventlogger_config, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:

        # Open each csv in the files list
        # and ignore column headers
        for file in files:
            csv_file = open_csv(file)
            csv_headers = csv_file[0]
            csv_data = csv_file[1:]

            # Insert each row of each csv into eventlogger table
            for row in csv_data:
                placeholders = ', '.join(['%s'] * len(row))
                sql = "INSERT INTO %s ( %s ) VALUES ( %s )" % (table, csv_headers, placeholders)
                print(csv_headers, '
')
                print(sql, '
')
                print(row)
                cursor.execute(sql, row)
    # Connection is not autocommit by default.
    # So you must commit to save your changes.
    connection.commit()

finally:
    connection.close()

print('Finished')

upload_to_db('gsSearchAnalyticsTest', 'some_folder')

这里是输出:

Uploading...['date', 'site_id', 'site', 'landing_page', 'keyword', 'source', 'impressions', 'clicks', 'position'] 

INSERT INTO gsSearchAnalyticsTest ( ['date', 'site_id', 'site', 'landing_page', 'keyword', 'source', 'impressions', 'clicks', 'position'] ) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s ) 

['2018-01-01', '2', 'something.co.uk', 'something.co.uk/somewhere_in_the_world', 'somewhere in the world', 'uk', '1', '1', '2.000000000000']

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '['date', 'site_id', 'site', 'landing_page', 'keyword', 'source', 'impressions', ' at line 1")

这是我想要做的:

  • 从源数据库中提取数据
  • 作为csv导出并保存在某些文件夹中
  • 拾取并循环浏览文件夹中的所有csv文件,并将其插入目标数据库中

问题是,我的代码在哪里出错了?我该如何纠正呢?

答案

从查询中删除方括号“将INSERT插入gsSearchAnalyticsTest(['date',...])VALUES(...)“

以上是关于将csv中的行插入到mysql数据库中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

Javascript PHP/MySQL - 将数据库中的行值插入文本字段

通过 python 将 csv 文件插入 MySQL。运行但数据未填充到表中

从 sql 文件或使用 csv 文件将数据插入 mysql

从 csv 文件批量插入 - 忽略有错误的行 - SQL Server

将 CSV 中的中文字符插入 MySQL 时遇到问题