So importieren Sie CSV- und TSV-Dateien mit Python in SQLite

Einführung

sqlite-183454_640.png

Ich möchte CSV- und TSV-Daten mit Python in SQLite DB importieren! Dies ist eine Erklärung zum Importieren mit einem einzigen Skript für solche Personen.

In den folgenden Artikeln erfahren Sie, was SQLite ist und wie es eingerichtet wird. Einfache Technik zur Erstellung lokaler SQL-Umgebungen, die von Python und SQLite realisiert wurde

Importmethode

Siehe "Erklärung" unten für die Verwendung.

Skript

import_data_to_sqlite.py


import sqlite3
import csv
import os

#######↓ Ändern Sie hier die Parameter ↓#######
dbname = ''
target_table_name = ''
import_table_name = ''
is_create_table = 
is_header_skip = 
#####################################


#######↓ Zieltabelle DDL importieren ↓#######
sql_script = """

"""
#######################################

class ImportSQLite():
    def __init__(self, dbname, target_table_name, import_data_name, is_create_table, is_header_skip=False, sql_create_table=None):
        """
Importieren Sie CSV- oder TsV-Dateien in SQLite
        :param dbname:Text Name der Verbindungsziel-DB
        :param target_table_name:text Tabellenname in der zu importierenden Datenbank
        :param import_data_name:text Der Name der Daten, die Sie importieren möchten
        :param is_create_table:boolean Gibt an, ob eine Tabelle zum Importieren erstellt werden soll
        :param is_header_skip:boolean Gibt an, ob der Header der zu importierenden Daten übersprungen werden soll
        :param sql_create_table:Text-DDL der zu importierenden Tabelle
        """
        self.dbname = dbname
        self.target_table_name = target_table_name
        self.import_data_name = import_data_name
        self.is_create_table = is_create_table
        self.is_header_skip = is_header_skip
        _, raw_delimiter = os.path.splitext(import_data_name)
        if raw_delimiter == '.csv':
            self.delimiter = ','
        elif raw_delimiter == '.tsv':
            self.delimiter = '\t'
        else:
            raise ValueError('Import file should be csv or tsv.')

        if is_create_table:
            if not sql_create_table:
                raise ValueError('It\'s necessary of sql to create table')
            else:
                self.sql_create_table = sql_create_table


    def read_import_file(self):
        with open(self.import_data_name, 'r', encoding='utf-8') as f:
            reader = csv.reader(f, delimiter=self.delimiter)
            if self.is_header_skip:
                header = next(reader)

            return [i for i in reader]


    def pick_column_num(self, import_data):
        """
Berechnen Sie die Anzahl der Spalten in der Importdatei
        :param import_data: array(two-dimensional)
        :return: int
        """
        columns = []
        for raw in import_data:
            columns.append(len(raw))
        if len(set(columns)) == 1:
            return columns[0]
        else:
            raise ValueError('this import files has diffrenect column numbers.')


    def insert_csv_file(self):
        input_file = self.read_import_file()
        column = self.pick_column_num(input_file)
        val_questions = ['?' for i in range(column)]
        cur.executemany("insert into {0} values ({1})".format(self.target_table_name, ','.join(val_questions)), input_file)


if __name__ == '__main__':

    sql = ImportSQLite(
        dbname=dbname,
        target_table_name=target_table_name,
        import_data_name=import_table_name,
        is_create_table=is_create_table,
        is_header_skip= is_header_skip,
        sql_create_table=sql_script
    )

    conn = sqlite3.connect(sql.dbname)
    cur = conn.cursor()

    if sql.is_create_table:
        cur.execute('drop table if exists {};'.format(target_table_name))
        cur.execute(sql.sql_create_table)

    sql.insert_csv_file()

    conn.commit()
    conn.close()

Kommentar

Elemente einstellen

Variablennamen Schimmel Einstellmethode
dbname Text DB-Name des Verbindungsziels. Geben Sie in Form eines Pfads an.
target_table_name Text Der Name der Tabelle in der zu importierenden Datenbank
import_table_name Text Der Name der Daten, die Sie importieren möchten. Geben Sie in Form eines Pfads an.
is_create_table Boolean(True or False) Gibt an, ob eine Tabelle zum Importieren erstellt werden soll
is_header_skip Boolean(True or False) Gibt an, ob der Header der zu importierenden Daten übersprungen werden soll

Anmerkungen

Verwendung und Probe

Wenn Sie beispielsweise die folgende CSV haben und noch keine Tabelle in der Verbindungsziel-DB vorhanden ist

students.csv


id,name,class,blood_type
1,Mike,Moon,B
2,Bob,Song,A
3,Gonzalez,Star,AB
4,Alex,Moon,

Die Einstellungselemente sind wie folgt.

(Öffnungs-) Import_data_to_sqlite.py


#######↓ Ändern Sie hier die Parameter ↓#######
dbname = 'test.db' # '/home/user/test.db'Kann auch in Form von angegeben werden
target_table_name = 'students'
import_table_name = 'students.csv' # '/home/user/students.csv'Kann in Form von angegeben werden
is_create_table = True
is_header_skip = True
#################################


#######↓ Tabelle DDL für Importziel erstellen ↓#######
sql_script = """
create table students(
    id integer,
    name text,
    class text,
    blood_type text
);
"""
#######################################

Alles was Sie tun müssen, ist es normal zu starten

kick.sh


$ python import_data_to_sqlite.py

Das ist es.

Recommended Posts

So importieren Sie CSV- und TSV-Dateien mit Python in SQLite
Importieren Sie tsv mit Python
Lesen einer CSV-Datei mit Python 2/3
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Zusammenfassung zum Importieren von Dateien in Python 3
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
Schreiben Sie mit Python in csv
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Hochladen von Dateien in den Cloud-Speicher mit dem Python-SDK von Firebase
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Python: So verwenden Sie Async mit
[Python] Mit Python in eine CSV-Datei schreiben
Verwendung von SQLite in Python
Ausgabe in eine CSV-Datei mit Python
Erste Schritte mit Python
Behandeln Sie Excel-CSV-Dateien mit Python
So berechnen Sie das Datum mit Python
Lesen und Schreiben von CSV mit Python
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
So ändern Sie Djangos SQLite3, das mit nur einer grafischen Benutzeroberfläche überall auf Python hochgeladen wurde
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Umgang mit Fehlern bei der Installation von Python und Pip mit Choco
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
[Python] So konvertieren Sie eine Datenbankdatei in CSV
[Linux] Unterteilen von Dateien und Ordnern
So verpacken und verteilen Sie Python-Skripte
So konvertieren Sie csv in tsv in CLI
Fügen Sie Protokollpuffer mit Python in SQLite ein
Fraktal zum Erstellen und Spielen mit Python
So arbeiten Sie mit BigQuery in Python
[Python] Verwendung von import sys sys.argv
Lesen und Schreiben von CSV-Dateien mit Numpy
Wie man einen Taschentest mit Python macht
Lesen und Schreiben von JSON-Dateien mit Python
So zeigen Sie Python-Japanisch mit Lolipop an
Versuch, SQLite3 mit Python zu handhaben [Hinweis]
Lesen Sie Python csv und exportieren Sie es nach txt
Python: Verwendung von Einheimischen () und Globalen ()
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Wie man mit Python-Flüchen Japanisch eingibt
[Python] Berechnen von MAE und RMSE
Verwendung von Python zip und Aufzählung
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
Lesen von CSV-Dateien mit Pandas
Verwendung ist und == in Python
So installieren Sie Python3 mit Docker Centos
[Einführung in Python] So beurteilen Sie die Authentizität mit der if-Anweisung (True und None)
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Erstellen Sie Heroku, Flask, Python, Nyanko Bulletin Board mit "CSV-Datei"
Hochladen mit Heroku, Flask, Python, Git (4)