Insertion de comptes en masse

De OpenWikiBSD
Aller à : navigation, rechercher

Supposons que vous disposez des fichiers CSV de vos users avec nom, prénom , login et mot de passe en clair (oui, oui...); un par classe.

  • Nettoyons les csv
dos2unix *
mkdir ../Dest-Csv
for CSV in `ls *.csv` ; do cat $CSV | iconv -c -f utf8 -t ascii > ../Dest-Csv/$CSV; done
 perl -pi -e "s/'//g" *.csv

mysql

 drop table users;
 create table users (NOM VARCHAR(255) NOT NULL, PRENOM varchar(255) NOT NULL, CLASSE VARCHAR(32) , USER VARCHAR(255) NOT NULL PRIMARY KEY, PASS VARCHAR(255) NOT NULL);
 
for CL in `ls *.csv`; do mysql --database=thelia -vve "LOAD DATA INFILE '$CL'   INTO TABLE users CHARACTER SET UTF8 FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;" ; done

Vos users sont dans la base users.thelia

apt-get install python-mysqldb

Maintenant, on va lire une table pour écrire les enregistrements dans une autre

#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("IP","USER","PASS","BDD" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = "SELECT * FROM users "
try:
  # Execute the SQL command
  cursor.execute(sql)
  # Fetch all the rows in a list of lists.
  results = cursor.fetchall()
  for row in results:
     NOM = row[0]
     PRENOM = row[1]
     CLASSE = row[2]
     USER = row[3]
     PASS = row[4]
     sqlins="insert into client (entreprise,siret,raison,nom,prenom,adresse1,cpostal,ville,pays,email,motdepasse) values ('%s','%s',1,'%s','%s','Lycee MaxP','CODEPOSTAL','VILLE','64','%s',password('%s'));"   %     (CLASSE,USER,NOM,PRENOM,USER,PASS)
     cursor.execute(sqlins)
except:
  print "Error: unable to fetch data"
 # disconnect from server
db.close()