Plusieurs insert into

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.

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.

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 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 :slight_smile:

Oups :wink:

Merci pour le retour, Arnaud.

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 :slight_smile:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs