2010-09-07 4 views
0

Je cherche le moyen le plus rapide d'insérer plusieurs lignes dans une table MySql avec deux colonnes. Une colonne a une valeur constante (1 par exemple) tandis que l'autre change toujours. J'utilise php et j'ai une grande chaîne avec des adresses email (milliers), je veux le mettre dans un tableau avec les colonnes: email_cat_id et email_address. L'email_cat_id est constant tandis que l'adresse email change pour chaque email.le moyen le plus rapide d'insérer plusieurs lignes dans mysql avec une valeur fixe pour une colonne

+1

On a une valeur constante, qu'est-ce qui fait que l'autre valeur est différente? Quel langage de codage utilisez-vous? Avez-vous besoin d'un script ou souhaitez-vous insérer les enregistrements vous-même? (: P: P) Soyez plus précis ou vous n'aurez aucune réponse. – Younes

+0

Cette question est trop vague. Pourquoi ne pas être plus précis? Combien de lignes? Combien de temps devrait-il être, etc –

+0

J'espère que certains clairement maintenant – Mike

Répondre

1

Il devrait être possible d'insérer plusieurs lignes dans une instruction avec quelque chose comme ceci:

INSERT INTO [table] 
([col1], [col2]) VALUES 
('[data for col1]', '[data for col2]'), 
('[data (2nd row) for col1]', '[data (2nd row) for col2]'), 
... 

a la colonne fixe toujours la même valeur lors de l'insertion? Si c'est le cas, vous devez définir une valeur par défaut pour cette colonne et omettre sa valeur dans l'instruction insert.

Si vous avez besoin d'insérer beaucoup d'enregistrements, vous devez également vérifier la commande LOAD DATA INFILE. Cela vous permet d'importer en bloc des données à partir d'un fichier texte, mais il peut être appelé comme n'importe quelle autre commande SQL. (Pour en savoir plus, voir la documentation MySQL au http://dev.mysql.com/doc/refman/5.1/en/load-data.html)

+0

le n'est pas possible de le faire, je ne dois pas exploser la chaîne? – Mike

+0

Vous devrez le diviser à un moment donné; soit en utilisant 'explode()', soit en utilisant une sorte de logique de manipulation de chaînes compliquée sur la base de données, ou en analysant l'entrée pendant que vous la lisez, et prenez des valeurs dans la base de données une par une. Les bases de données ne sont pas bonnes à la manipulation de chaîne, donc la deuxième option n'est pas votre meilleur pari. Le troisième est le mieux adapté si votre ensemble de données est très grand. – tdammers

+0

D'où obtenez-vous vos adresses email en premier lieu? Si elles sont importées avec un champ de formulaire un par ligne, vous pouvez directement enregistrer ces données dans un fichier temporaire, puis utiliser LOAD DATA INFILE - no explode() nécessaire. Aussi, consultez http://dev.mysql.com/doc/refman/5.1/en/insert-speed.html! – Malte

Questions connexes