Un script qui prépare un CSV qui suit certaines règles et génère une instruction d'insertion à partir de celui-ci Vous pouvez voir des exemples de réalisation de choses similaires avec des feuilles Excel.
Quelles sont certaines règles?
Il y a un problème, et comme il n'y a pas d'informations de type pour la table uniquement avec CSV, il n'est pas possible de juger si elle viendra avec ''. Dans cet exemple, tout est inclus une fois. En pratique, l'idée est de la remplacer par une expression régulière plus tard.
Python 3.7.2 Visual Studio Code 1.39.1
CSV2insSQL.py
#Générez une instruction d'insertion à partir de CSV.
#règle
#nom de fichier(Hors extensions)Est le nom de la table
#On suppose que le csv a un en-tête et que le nom de la colonne correspond au nom de la colonne DB.
#Tâche!!Avec CSV seul, il n'y a pas d'informations de type pour la table, donc''Je ne peux pas juger si c'est gros ou pas
#Dans cet exemple, tout est inclus une fois(Pratiquement, remplacer plus tard par une expression régulière)
import csv
import os
FROM_CSV = '.\\CSV\\' + "xxx_LIST.csv"
def main():
#Traitement du corps
#...Génération d'insert maître
with open(".\\CSV\\insertSQL.txt", "w", newline="",encoding="cp932") as wf:
#Du nom de fichier au nom de table
tablename = os.path.splitext(os.path.basename(FROM_CSV))[0]
with open(FROM_CSV, encoding="cp932",) as f:
reader = csv.DictReader(f)
for row in reader:
#insérer la génération d'instructions
insert_sql = "insert into " + tablename
fields = ",".join(reader.fieldnames)
insert_sql = insert_sql + "( " + fields + ") VALUES"
valuelist = []
for fld in reader.fieldnames:
#Tâche!!Avec CSV seul, il n'y a pas d'informations de type pour la table, donc''Je ne peux pas juger si c'est gros ou pas
#Dans cet exemple, tout est inclus une fois
valuelist.append("'" + row[fld] + "'")
valustr = ",".join(valuelist)
insert_sql = insert_sql + "( " + valustr + ");"
wf.write(insert_sql+"\n")
if __name__ == '__main__': main()
Recommended Posts