8
votes

Phpmyadmin / mySQL - ajoutez le champ ID et les numéros d'autopopulation

J'ai une table de base de données extrêmement grande - près de 20 millions d'enregistrements.

Les enregistrements n'ont pas de numéro d'identification unique. Donc, j'ai inséré le nouveau champ.

Maintenant, je voudrais le remplir avec des numéros d'identification, augmentant de 1, en commençant par le premier numéro d'identification étant de 10 000 001.

FYI - J'utilise WAMP sur une machine locale et j'ai composé toutes mes heures max jusqu'à 5000 secondes et composé plusieurs autres variables dans php.ini et mysql.ini afin de faire le téléchargement en premier lieu ( qui a pris plus de 10 heures !!).

Dans le passé, ou avec d'autres dB, j'aurais peut-être exporté les données dans Excel, puis a suscité un texte pour coller dans phpmyadmin pour mettre à jour les enregistrements. C'est bien lorsque vous travaillez avec 5K enregistrements, voire 100 000 enregistrements, mais cela semble inutilisable avec 20 millions d'enregistrements.

Merci d'avance !!


0 commentaires

3 Réponses :


0
votes

Ceci fonctionne dans SQL Server, vous pouvez peut-être l'adapter à MySQL:

declare @value int 
set @value=10000000

update your_table
set @value+=1,id=@value


0 commentaires

16
votes

Il suffit d'exécuter ces deux requêtes l'une après l'autre dans l'onglet SQL: xxx

mysql créera ensuite le champ ID et remplissez-le de manière séquentielle à partir de 10000001 .


4 commentaires

C'est ce que je reçois pour répondre à un appel téléphonique; D


Merci pour la réponse rapide.


Combien de temps pourrais-je m'attendre à ce que cette chose fonctionne avec 20 millions d'enregistrements? J'ai collé dans la première ligne de code, cela allait environ 5 minutes. Puis-je vous attendre à ce que cela prenne une heure ou plus pour traiter?


Que je ne pouvais pas te dire. Mais ce sera un diable de beaucoup plus rapide que d'exporter / importer.



0
votes

Tout ce que vous avez à faire est de définir la colonne pour être auto_incrètent et MySQL remplacera les lignes pour vous. Disons que vous voulez que votre nouvelle colonne soit nommée 'ID'.

alter table yourtable auto_increment = 10000001;
alter table yourtable add id int unsigned primary key auto_increment;


0 commentaires