Импорт CSV-файлов в базу данных SQL с использованием SQLite в Python

У меня есть 2. TXT-файлы, и я преобразовал их в CSV-файлы, используя https://convertio.co/csv-xlsx/ . Теперь я хотел бы импортировать эти два CSV-файла в две базы данных, используя SQLite в Python (UI – Jupyter Notebook). Эти два файла .csv помечены как person.csv и person_votes.csv . Итак, я сделал это, выполнив приведенный здесь код ( Импорт CSV-файла в таблицу базы данных sqlite3 с использованием Python ):

import sqlite3, csv con = sqlite3.connect(":memory:") cur = con.cursor() cur.execute("CREATE TABLE person (personid STR,age STR,sex STR,primary_voting_address_id STR,state_code STR,state_fips STR,county_name STR,county_fips STR,city STR,zipcode STR, zip4 STR, PRIMARY KEY(personid))") with open('person.csv','r') as person_table: # `with` statement available in 2.5+ # csv.DictReader uses first line in file for column headings by default dr = csv.DictReader(person_table) # comma is default delimiter #personid age sex primary_voting_address_id state_code state_fips county_name county_fips city zipcode zip4 to_db = [(i['personid'], i['age'], i['sex'], i['primary_voting_address_id'], i['state_code'], i['state_flips'], i['county_name'], i['county_fips'], i['city'], i['zipcode'], i['zip4']) for i in dr] cur.executemany("INSERT INTO t (age, sex) VALUES (?, ?);", to_db) con.commit() 

Я не понимаю, почему, когда я пытался выполнить код выше, я продолжаю получать сообщение об ошибке: «KeyError:« personid ». Может ли кто-нибудь помочь?

Кроме того, если я создаю другую таблицу базы данных с именем to_db2 для файла person_votes.csv в том же файле Python, будет ли следующий запрос дать мне все общие элементы между двумя таблицами:

 select ID from to_db, to_db2 WHERE to_db.ID == to_db2 

Ссылка на два .csv-файла выше: https://drive.google.com/open?id=0B-cyvC6eCsyCQThUeEtGcWdBbXc .

3 Solutions collect form web for “Импорт CSV-файлов в базу данных SQL с использованием SQLite в Python”

Это работает для меня в Windows 10, но также должно работать под Linux / Unix. Существует несколько проблем:

  1. Последние две строки person.csv неверны, но это не мешает работе программы. Вы можете исправить это с помощью текстового редактора.
  2. person.csv использует вкладки как разделитель, а не запятые.
  3. В строке есть опечатка (правописание), начинающаяся с «to_db =»
  4. Существует несоответствие количества импортируемых столбцов (2 вместо 11)
  5. Неверное имя таблицы для исполнителей.

Кроме того, я создаю базу данных в файле, а не в памяти. Это достаточно мало, что производительность не должна быть проблемой, и любые изменения, которые вы сделаете, будут сохранены.

Вот мой исправленный файл (вы можете сделать другой стол самостоятельно):

 import sqlite3, csv # con = sqlite3.connect(":memory:") con = sqlite3.connect("person.db") cur = con.cursor() cur.execute("CREATE TABLE person (personid STR,age STR,sex STR,primary_voting_address_id STR,state_code STR,state_fips STR,county_name STR,county_fips STR,city STR,zipcode STR, zip4 STR, PRIMARY KEY(personid))") with open('person.csv','r') as person_table: dr = csv.DictReader(person_table, delimiter='\t') # comma is default delimiter to_db = [(i['personid'], i['age'], i['sex'], i['primary_voting_address_id'], i['state_code'], i['state_fips'], i['county_name'], i['county_fips'], i['city'], i['zipcode'], i['zip4']) for i in dr] cur.executemany("INSERT INTO person VALUES (?,?,?,?,?,?,?,?,?,?,?);", to_db) con.commit() 

Похоже, что вы можете пропустить некоторые имена столбцов в INSERT INTO ...

Вероятно, не очень хорошая практика, оставляя основной ключ как NULL .

Никто не хочет, чтобы мой код попытался понять, почему он терпит неудачу?

  • Передача значения из выпадающего меню в шаблон фляги
  • Python sqllite3 с каркасом для бутылок в Google App Engine
  • sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 74 поставленных
  • Что это за инструкция cur.execute?
  • Как создать файл CSV из базы данных в Python?
  • Python ORM, который автоматически генерирует / обновляет таблицы и использует SQLite?
  • Импорт CSV-файла в таблицу базы данных sqlite3 с использованием Python
  • Как сделать ON DELETE CASCADE работать в sqlite 3.7.4?
  • производительность вставки с помощью python и sqlite3
  • Фильтровать запрос с помощью связанного ключа объекта в SQLAlchemy
  • Дэнго
  •  
    Interesting Posts for Van-Lav

    Python @property против производительности метода – какой из них использовать?

    преобразование файла с разделителями пробелов в CSV

    Разбор файла с разделителями в python

    как повернуть текст в графике черепахи питона

    Сопоставление значений столбцов в Pandas DataFrame со значениями «NaN»

    Python: пользовательское исключение, которое подтверждает правило

    Очистить переменную, не разрушая ее

    Запись музыкального потока Python

    Python: как определить время выполнения имени аргумента

    django-taggit: сделать теги не требуемыми в admin

    Python multiprocessing.cpu_count () возвращает '1' на 4-ядерном Nvidia Jetson TK1

    Порядок разрешения метода в случае базовых классов Имея разные параметры инициализации

    Как использовать подзапросы в SQLAlchemy для получения скользящей средней?

    Как декодировать юникод в китайском тексте

    Установите SQLAlchemy для использования PostgreSQL SERIAL для создания идентичности

    Python - лучший язык программирования в мире.