如何从csv文件中提取数据并将其放入sqlite数据库?

时间:2016-03-30 22:17:28

标签: sqlite pandas

  

我正在尝试使用此代码从大型csv文件中提取数据并插入到数据库中。中的图式       数据库在代码中提供。但是,我在最后一行做错了。该   代码给了我价值错误。我正在使用pandas来读取csv文件。有人可以帮我指出我哪里出错了吗?

import pandas as pd
import sqlite3

conn = sqlite3.connect('newdb.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS Policy;
DROP TABLE IF EXISTS Statecode;
DROP TABLE IF EXISTS County;
DROP TABLE IF EXISTS Line;
DROP TABLE IF EXISTS Construction;
DROP TABLE IF EXISTS Point_Granularity;

CREATE TABLE Statecode (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name    TEXT UNIQUE
);

CREATE TABLE County (
id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,

name   TEXT UNIQUE
);
CREATE TABLE Line(
id INTEGER NOT NULL PRIMARY KEY
    AUTOINCREMENT UNIQUE,
name TEXT UNIQUE);
CREATE TABLE Construction(
id INTEGER NOT NULL PRIMARY KEY
    AUTOINCREMENT UNIQUE,
name TEXT UNIQUE);
CREATE TABLE Point_Granularity(
id INTEGER NOT NULL PRIMARY KEY
    AUTOINCREMENT UNIQUE,
number INTEGER UNIQUE);

CREATE TABLE Policy (
id  INTEGER NOT NULL PRIMARY KEY
    AUTOINCREMENT UNIQUE,
policyID INTEGER  ,
eq_site_line  FLOAT,
hu_site_line INTEGER,

statecode_id INTEGER,
county_id INTEGER,
line_id INTEGER,
construction_id INTEGER,
point_granularity_id INTEGER
);
''')
df = pd.read_csv('FL_insurance_sample.csv')
for policy in df.policyID:
    cur.execute('INSERT INTO Policy (policyID) VALUES (?)',policy)
    conn.commit()

2 个答案:

答案 0 :(得分:0)

我相信,使用policy.astype(int)应该适用于这种情况?任何人都可以确认吗?

答案 1 :(得分:0)

基本上你不想循环你的数据框 - 你会失去所有熊猫的好处,而且它也会太慢。您想使用数据框:

zend_extension=xdebug.so
你可能想要按摩"按摩"您之前的数据将适合您的表格结构

PPS如果你想要一个工作实例,你应该提供输入数据的样本 - 5-10行就够了