【问题标题】:Insert CSV into SQL database in python在python中将CSV插入SQL数据库
【发布时间】:2014-08-02 05:28:20
【问题描述】:

我想将 CSV 文件中的数据插入到我之前创建的表中。 所以假设我创建了一个名为 T 的表 csv_file 如下:

Last,First,Student Number,Department
Gonzalez,Oliver,1862190394,Chemistry
Roberts,Barbara,1343146197,Computer Science
Carter,Raymond,1460039151,Philosophy

【问题讨论】:

  • 这个问题是关于在 Python 中读取 CSV 数据,在 Python 中创建 SQL 插入,还是两者兼而有之?你有没有尝试过这些?
  • 谷歌上的快速搜索给了我这个 Stack Overflow 答案:[Python 和 SQLite 插入表][1] [1]:stackoverflow.com/questions/2092757/…
  • @paisanco 是的,两者都是。对于 read_csv 函数,我必须创建并插入两者。我在创建表时创建了 sql_command,并执行了 sql_comand。但是如何将 csv 文件中的所有数据插入到表中呢?我应该读一下,然后把 csv 变成一个列表吗?还是有直接的方法?
  • 为了读取 CSV,我会使用 Python csv 模块将其放入列表中。如果使用 SQLite,@ChristerNissen 链接的问题应该会有所帮助。

标签: python sql insert


【解决方案1】:

shared by Mumpo 为基础。

在将 CSV 插入 SQL Server 时,这对我有用。您只需要提供连接详细信息、文件路径和要写入的表。唯一需要注意的是您的表必须已经存在,因为此代码会将 CSV 插入到现有表中。

import pyodbc
import csv

# DESTINATION CONNECTION
drivr = ""
servr = ""
db = ""
username = ""
password = ""
my_cnxn = pyodbc.connect('DRIVER={};SERVER={};DATABASE={};UID={};PWD={}'.format(drivr,servr,db,username,password))
my_cursor = cnxn.cursor()

def insert_records(table, yourcsv, cursor, cnxn):
    #INSERT SOURCE RECORDS TO DESTINATION
    with open(yourcsv) as csvfile:
        csvFile = csv.reader(csvfile, delimiter=',')
        header = next(csvFile)
        headers = map((lambda x: x.strip()), header)
        insert = 'INSERT INTO {} ('.format(table) + ', '.join(headers) + ') VALUES '
        for row in csvFile:
            values = map((lambda x: "'"+x.strip()+"'"), row)
            b_cursor.execute(insert +'('+ ', '.join(values) +');' )
            b_cnxn.commit() #must commit unless your sql database auto-commits

table = <sql-table-here>
mycsv = '...T.csv' # SET YOUR FILEPATH
insert_records(table, mycsv, my_cursor, my_cnxn)
cursor.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2021-10-21
    • 2020-04-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多