繁体   English   中英

Python,将CSV文件转换为SQL表

[英]Python, converting CSV file to SQL table

我有一个没有标题的CSV文件,我试图从文件中的某些列创建一个SQL表。 我尝试了这里给出的解决方案: 使用Python将CSV文件导入到sqlite3数据库表中 ,但不断得到没有定义col1的错误。 然后我尝试在我的CSV文件中插入标题,我仍然得到一个KeyError。

任何帮助表示赞赏! (我根本不熟悉SQL)

如果.csv文件没有标题,则不想使用DictReader; DictReader假定第1行是一组标题,并将它们用作每个后续行的键。 这可能就是你获得KeyError的原因。

该链接的示例的修改版本:

import csv, sqlite3

con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("CREATE TABLE t (col1, col2);")

with open('data.csv','rb') as fin:
    dr = csv.reader(fin)
    dicts = ({'col1': line[0], 'col2': line[1]} for line in dr)
    to_db = ((i['col1'], i['col2']) for i in dicts)

cur.executemany("INSERT INTO t (col1, col2) VALUES (?, ?);", to_db)
con.commit()

下面的代码将从路径中读取所有csv文件,并将所有数据加载到sqllite 3数据库中的表中。

   import sqllite3
   import io
   import os.path
   import glob
        cnx = sqlite3.connect(user='user', host='localhost', password='password',
                                        database='dbname')
        cursor=cnx.cursor(buffered= True);


        path ='path/*/csv' 
        for files in glob.glob(path + "/*.csv"):
            add_csv_file="""LOAD DATA LOCAL INFILE '%s' INTO TABLE tabkename FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'  IGNORE 1 LINES;;;""" %(files)

            print ("add_csv_file: %s" % files)
            cursor.execute(add_csv_file)

        cnx.commit()
        cursor.close();
        cnx.close();

让我知道这个是否奏效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM