arnaud
1
Bonjour!
Voila mon problème: j’ai besoin de récupérer pleins d’enregsitrements
d’une base pour les trier et les mettre dans une autre…
Tout va bien sauf que quand j’insére mes éléments dans ma seconde base,
j’utilise la fonction “create” pour chaque enregistrement, et donc…
insert into (…) values (…)
insert into (…) values (…)
insert into (…) values (…)
alors que j’aurais préféré
insert into (…) values (…), (…), (…)
Est-ce que vous savez comment je peux m’y prendre pour changer ça?
Pour info, au-delà de 127 enregistrements, je rencontre un bug de MySQL
qui me dit
Mysql::Error: Duplicate entry ‘127’ for key 1: …
C’est apparement un bug connu de MySQL.
arnaud
2
Salut Arnaud,
alors que j’aurais préféré
insert into (…) values (…), (…), (…)
Est-ce que vous savez comment je peux m’y prendre pour changer ça?
AR::Base#create ne le fait pas. Une des raisons est à mon avis le fait
que
l’insert multiple n’est pas portable (enfin je crois).
Plusieurs possibilités :
-
Rajouter une méthode à AR::B qui consisterait essentiellement Ã
concaténer une chaîne “INSERT INTO …” avec pleins de chaînes
values “(…)” (Ã partir d’un tableau de hash comme #create). C’est
faisable.
Le point juste un peu délicat, c’est la clé primaire (gérer la
séquence…).
-
Accepter les requêtes SQL voir si encapsulées dans une transaction,
c’est
pas plus rapide, mais si tu utilises du MyISAM et non de l’InnoDB, c’est
rapé.
-
Remplir ta base de manière “classique”, c’est à dire sans
ActiveRecord,
avec un fichier CSV, un dump MySQL, etc.
Pour info, au-delà de 127 enregistrements, je rencontre un bug de MySQL
qui me dit
Mysql::Error: Duplicate entry ‘127’ for key 1: …
C’est apparement un bug connu de MySQL.
ah bah en plus
– Jean-François.
arnaud
3
Jean-François wrote:
Salut Arnaud,
alors que j’aurais préféré
insert into (…) values (…), (…), (…)
Est-ce que vous savez comment je peux m’y prendre pour changer ça?
AR::Base#create ne le fait pas. Une des raisons est à mon avis le fait
que
l’insert multiple n’est pas portable (enfin je crois).
– Jean-François.
Bon ben j’ai fais ça à l’ancienne en construisant ma requete…
Merci quand meme
arnaud
4
arnaud stageman a écrit :
Est-ce que vous savez comment je peux m’y prendre pour changer ça?
Pour information, j’ai passé mon identifiant de tinyint en smallint
(type MySQL) et ca marche beaucoup mieux comme ça 
Oups 
Merci pour le retour, Arnaud.
arnaud
5
arnaud stageman wrote:
Jean-François wrote:
Salut Arnaud,
alors que j’aurais préféré
insert into (…) values (…), (…), (…)
Est-ce que vous savez comment je peux m’y prendre pour changer ça?
AR::Base#create ne le fait pas. Une des raisons est à mon avis le fait
que
l’insert multiple n’est pas portable (enfin je crois).
– Jean-François.
Bon ben j’ai fais ça à l’ancienne en construisant ma requete…
Merci quand meme
Pour information, j’ai passé mon identifiant de tinyint en smallint
(type MySQL) et ca marche beaucoup mieux comme ça 