Ein Skript, das eine CSV vorbereitet, die bestimmten Regeln folgt und daraus eine Einfügeanweisung generiert Sie können Beispiele für ähnliche Dinge mit Excel-Tabellen sehen.
Was sind bestimmte Regeln?
Es gibt ein Problem, und da es nur mit CSV keine Typinformationen für die Tabelle gibt, kann nicht beurteilt werden, ob sie mit '' geliefert wird. In diesem Beispiel ist alles einmal eingeschlossen. In der Praxis besteht die Idee darin, es später durch einen regulären Ausdruck zu ersetzen.
Python 3.7.2 Visual Studio Code 1.39.1
CSV2insSQL.py
#Generieren Sie eine Einfügeanweisung aus CSV.
#Regel
#Dateiname(Erweiterungen ausschließen)Ist der Tabellenname
#Es wird angenommen, dass die CSV einen Header hat und der Spaltenname mit dem DB-Spaltennamen übereinstimmt.
#Aufgabe!!CSV allein hat also keine Typinformationen für die Tabelle''Ich kann nicht beurteilen, ob es groß ist oder nicht
#In diesem Beispiel ist alles einmal eingeschlossen(Praktisch später durch einen regulären Ausdruck ersetzen)
import csv
import os
FROM_CSV = '.\\CSV\\' + "xxx_LIST.csv"
def main():
#Körperbearbeitung
#...Master Insert Generation
with open(".\\CSV\\insertSQL.txt", "w", newline="",encoding="cp932") as wf:
#Vom Dateinamen zum Tabellennamen
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:
#Anweisung generieren
insert_sql = "insert into " + tablename
fields = ",".join(reader.fieldnames)
insert_sql = insert_sql + "( " + fields + ") VALUES"
valuelist = []
for fld in reader.fieldnames:
#Aufgabe!!CSV allein hat also keine Typinformationen für die Tabelle''Ich kann nicht beurteilen, ob es groß ist oder nicht
#In diesem Beispiel ist alles einmal eingeschlossen
valuelist.append("'" + row[fld] + "'")
valustr = ",".join(valuelist)
insert_sql = insert_sql + "( " + valustr + ");"
wf.write(insert_sql+"\n")
if __name__ == '__main__': main()
Recommended Posts