J'ai essayé des centaines de millions de SQLite avec python

mongodb a également atteint sa limite.

Introduction la plus courte de Mongodb (1) Installer et démarrer dans EC2 et mettre soudainement des dizaines de milliers [Introduction la plus courte de Mongodb (2) J'ai recherché des dizaines de milliers] (http://qiita.com/tottoko/items/68e61daf6eafb03d4b4b) [Présentation la plus courte de Mongodb (3) J'ai essayé d'accélérer même des millions] (http://qiita.com/tottoko/items/b6c9430b1e0ab7cb409c)

M. Mongo qui est strict à partir de dizaines de millions de données. Depuis que le mur des 100 millions est apparu, SQL Lite est apparu dans un endroit surprenant.

[Impact NoSQL KVS Easy DB mongo redis sqlite Quelle était la vitesse de Dieu localement? .. .. ] (http://qiita.com/wan-liner/items/ee07442e5bd4afd5b1b5)

Si aucun traitement n'est requis ↑ C'était le plus puissant.

À proprement parler, il est préférable de conserver le fichier au format gz dans le lecteur CSV. Il est physiquement plus rapide de décompresser en mémoire que de lire un fichier à partir d'un disque normal. Bien sûr, sauf dans les cas où la lecture des fichiers est plus rapide que la mémoire (SSD? Nvme?). Donc, CSV a des colonnes, donc parfois je veux utiliser des espaces réservés.

Pour rendre le SQL plus facile à lire, j'aimerais que vous utilisiez un espace réservé avec le nom de colonne: nom_colonne1 pour échapper ou nettoyer automatiquement.

Utilisez le nom de la colonne comme clé dans la liste de lignes CSV pour créer un dictionnaire en une seule fois:

data=dict(zip(keys,row))

keys est une liste de noms de colonnes Exemple: ('id', 'title') row est une liste de lignes CSV séparées par des délimiteurs Exemple: 1111 "\ t" aaaa Maintenant, les données sont un dictionnaire comme {id: 1111, title: aaaa}. C'est magique.

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

Vous pouvez utiliser des espaces réservés comme mysql. Quand ce n'est pas un dictionnaire?

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

Aussi, la magie conn.text_factory = str

Tu ne m'as pas dit ça, alors tu t'es fâché! 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:
        #Si vous avez confiance dans les données, il est plus rapide d'omettre de vérifier le nombre de colonnes
        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

J'ai essayé des centaines de millions de SQLite avec python
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
J'ai essayé la "conversion de morphologie" de l'image avec Python + OpenCV
J'ai essayé webScraping avec python.
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé d'exécuter Movidius NCS avec python de Raspberry Pi3
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé le rendu non réaliste avec Python + opencv
J'ai essayé un langage fonctionnel avec Python
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de corriger "J'ai essayé la simulation probabiliste du jeu de bingo avec Python"
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé la reconnaissance manuscrite des caractères des runes avec scikit-learn
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé la reconnaissance d'image de CIFAR-10 avec Keras-Learning-
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé la reconnaissance d'image de CIFAR-10 avec la reconnaissance d'image Keras-
J'ai essayé Python> autopep8
J'ai essayé Flask avec des conteneurs distants de VS Code
J'ai essayé L-Chika avec Razpai 4 (édition Python)
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'ai essayé la synthèse de fonctions et le curry avec python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé d'exécuter Deep Floor Plan avec Python 3.6.10.
J'ai essayé d'envoyer un email avec SendGrid + Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé Python> décorateur
J'ai essayé d'utiliser la base de données (sqlite3) avec kivy
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
"Round of MD5 hash value of 6-digit number password" Je l'ai essayé avec Python
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de résumer comment utiliser matplotlib de python
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python