Ich habe Hunderte Millionen SQLite mit Python ausprobiert

mongodb hat auch seine grenze erreicht.

Mongodb kürzeste Einführung (1) Installieren und starten Sie in EC2 und setzen Sie plötzlich Zehntausende ein [Mongodb kürzeste Einführung (2) Ich habe nach Zehntausenden gesucht] (http://qiita.com/tottoko/items/68e61daf6eafb03d4b4b) [Mongodb Shortest Introduction (3) Ich habe versucht, sogar Millionen zu beschleunigen] (http://qiita.com/tottoko/items/b6c9430b1e0ab7cb409c)

Herr Mongo, der streng von zig Millionen Daten ist. Seit die Mauer von 100 Millionen in Sicht ist, ist SQL Lite an einem überraschenden Ort aufgetaucht.

[Auswirkungen NoSQL KVS Easy DB Mongo Redis SQLite Was war Gottes Geschwindigkeit vor Ort? .. .. ]] (http://qiita.com/wan-liner/items/ee07442e5bd4afd5b1b5)

Wenn keine Verarbeitung erforderlich ist ↑ Dies war die stärkste.

Genau genommen ist es besser, die Datei als gz im CSV-Reader zu behalten. Das Dekomprimieren im Speicher ist physisch schneller als das Lesen einer Datei von einer normalen Festplatte. Natürlich, außer in Fällen, in denen das Lesen von Dateien schneller ist als der Speicher (SSD? Nvme?). CSV hat also Spalten, daher möchte ich manchmal Platzhalter verwenden.

Um das Lesen der SQL zu vereinfachen, möchte ich, dass Sie einen Platzhalter mit dem Spaltennamen: Spaltenname1 verwenden, um zu maskieren oder automatisch zu bereinigen.

Verwenden Sie den Spaltennamen als Schlüssel in der CSV-Zeilenliste, um ein Wörterbuch auf einmal zu erstellen:

data=dict(zip(keys,row))

Schlüssel ist eine Liste von Spaltennamen Beispiel: ('id', 'title') Zeile ist eine Liste von CSV-Zeilen, die durch Trennzeichen getrennt sind. Beispiel: 1111 "\ t" aaaa Jetzt sind Daten ein Wörterbuch wie {id: 1111, title: aaaa}. Es ist Magie.

cursor.execute('insert into table (:id,:title)',data)

Sie können Platzhalter wie MySQL verwenden. Wenn es kein Wörterbuch ist?

cursor.execute('insert into table (?,?)',row)

Auch Magie conn.text_factory = str

Das hast du mir nicht gesagt, also bist du wütend geworden! sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings

# coding: utf-8
import sqlite3
import csv
import gzip

conn = sqlite3.connect("honyahonya.db")
conn.text_factory = str
csr = conn.cursor()

keys=(
'id',
'title',
'date',
'article'
)

with gzip.open("honyahonya.csv.gz", 'rU') as f:
    reader = csv.reader(f, delimiter="\t")
    for row in reader:
        #Wenn Sie mit den Daten vertraut sind, können Sie die Überprüfung der Anzahl der Spalten schneller unterlassen
        if len(row)==len(key):
            d=dict(zip(keys,row))
            csr.execute('insert into tracks (id,title,date,article) values(:id,:title,:date,:article)' , d)
            conn.commit()


Recommended Posts

Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Ich habe versucht, das Bild mit Python + OpenCV "morphologisch zu konvertieren"
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, mit Python ② (Fibonacci-Zahlenfolge) aufzuklären.
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht zu beheben "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren"
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, automatisch Bilder von Kanna Hashimoto mit Python zu sammeln! !!
Ich habe versucht, Runenfiguren mit Scikit-Learn handschriftlich zu erkennen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, Bilder von CIFAR-10 mit Keras-Bilderkennung zu erkennen.
Ich habe Python> autopep8 ausprobiert
Ich habe Flask mit Remote-Containern von VS Code ausprobiert
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, Mecab mit Python2.7, Ruby2.3, PHP7 zu verwenden
Ich habe Funktionssynthese und Curry mit Python versucht
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, mit Python Faiss zu laufen, Go, Rust
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, Deep Floor Plan mit Python 3.6.10 auszuführen.
Ich habe versucht, eine E-Mail mit SendGrid + Python zu senden
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe Python> Decorator ausprobiert
Ich habe versucht, die Datenbank (sqlite3) mit kivy zu verwenden
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
"Round of MD5-Hashwert des 6-stelligen Passworts" Ich habe es mit Python versucht
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen