Je cherche un moyen de générer une nouvelle table MySQL uniquement sur la base du contenu d'un CSV spécifié. Les fichiers CSV que j'utiliserai ont les propriétés suivantes;
Dans Excel, tout est assez simple, mais avec MySQL, cela ne semble pas l'être (pas de chance avec Google). Des suggestions sur ce que je devrais regarder?
Vous pouvez utiliser csvsql , qui fait partie de csvkit
(une suite d'utilitaires pour convertir et travailler avec des fichiers CSV):
Sudo pip install csvkit
csvsql --dialect mysql --snifflimit 100000 datatwithheaders.csv > mytabledef.sql
CREATE TABLE
instruction basée sur le contenu du fichier. Les noms de colonnes sont extraits de la première ligne du fichier CSV.Si vous êtes d'accord avec l'utilisation de Python, Pandas a très bien fonctionné pour moi (csvsql a été suspendu pour toujours et moins de colonnes et de lignes que dans votre cas). Quelque chose comme:
from sqlalchemy import create_engine
import pandas as pd
df = pd.read_csv('/PATH/TO/FILE.csv', sep='|')
# Optional, set your indexes to get Primary Keys
df = df.set_index(['COL A', 'COL B'])
engine = create_engine('mysql://user:pass@Host/db', echo=False)
df.to_sql(table_name, engine, index=False)
Vous devez générer une CREATE TABLE basée sur les types de données, la taille, etc. des différentes colonnes.
Ensuite, vous utilisez LOAD DATA INFILE ... FIELDS TERMINATED BY '|' LIGNES TERMINÉES PAR "\ n" SKIP 1 LINE ...; (Voir la page de manuel pour plus de détails.)
Faites de même pour chaque table csv ->.