2014-05-20 4 views
1

J'essaie d'insérer 13k lignes dans ma table. Ma structure de table est la suivanteInsérer 13 000 lignes dans la table existante

ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |

L'ID est la colonne principale (auto-incrémentation).

J'ai besoin Col1 pour refléter le numéro 1 à 13000.

Le reste des colonnes reste vide.

Je suis sûr que cette question a été posée avant mais je suis vraiment confus quant à la façon de le faire efficacement. Merci

+1

il n'y a pas moyen « efficace »: faire 13.000 inserts . soit la syntaxe étendue mysql, soit 13 000 insertions séparées. –

Répondre

3

http://naspinski.net/post/Running-a-For-Loop-in-MS-SQL.aspx

Suivez l'exemple affiché ici. votre While (@count < 40) sera 13000, Set @count = 0 sera 1, et au lieu de insert into some_table ([columnA], [column]) Values ('val1', 'val2') il aura juste [columnA] et @count au lieu de val1. L'exemple modifié ci-dessous devrait suffire.

commande SQL:

DECLARE @count INT 
SET @count = 1 
WHILE (@count < 13001) 

BEGIN 
    INSERT INTO some_table ([Col1]) VALUES (@count) 
    SET @count = (@count + 1) 
END 

MYSQL Commande:

BEGIN 
    DECLARE @count INT; 
    SET @count = 1; 

    WHILE (@count < 13001) 
    INSERT INTO 'some_table' ('col1') VALUES (@count); 
    SET @count = (@count + 1); 
    END WHILE; 
END; 
+0

Je pense que c'est ma meilleure option. Cependant, comment puis-je l'inclure dans un script PHP? Ou est-ce une commande SQL directe? – Pierre

+0

il s'agit d'une commande SQL/requête qui serait exécutée sur la base de données. – DarkEthics

+0

Je reçois l'erreur suivante lorsque j'exécute la requête dans la commande SQL: – Pierre

0

Vous devez spécifier votre source d'information.

Chaque plate-forme a ses propres façons de le faire.

Microsoft a ses services d'intégration par exemple. Mais s'il s'agit de données simples, vous pouvez créer un regex replace pour encapsuler les données dans un certain nombre de requêtes select insérées dans la table.

Mais j'ai besoin de savoir plus sur quelle base de données et la source de l'information pour vous aider plus.

+0

J'utilise mysql pour la base de données. – Pierre

+0

Peut-être im faire à beaucoup de suppositions, mais je suppose que les données (13k) ne sont pas déjà dans la base de données dans d'autres tables? Est-ce ainsi quelle est votre source de données. Un fichier Excel? – NeutronCode

+0

Non, les données doivent être créées en même temps. Merci – Pierre

1

La façon la plus efficace de chargement de données dans MySQL est de le charger à partir d'un fichier délimité local. MySQL a une commande load local infile qui fait cela:

LOAD DATA INFILE '/tmp/data.csv' INTO TABLE mytable 
FIELDS TERMINATED BY '|' 
LINES TERMINATED BY '\n' (Col1); 

Si votre fichier d'entrée est juste une liste des valeurs Col1, un par ligne:

8377 
3888 
3244 
... 
Questions connexes