[SQL SERVER 2005] Script de remplissage de table (BLUK INSERT & cie)

Script de remplissage de table (BLUK INSERT & cie) [SQL SERVER 2005] - SQL/NoSQL - Programmation

Marsh Posté le 09-07-2009 à 14:01:11    

Bonjour à tous :)
 
Je sais écrire un script sql pour SQL Server 2005 permettant d'importer un fichier plat csv dans une table. En revanche, j'ignore comment écrire un script plus évolué permettant de faire du mapping. Par exemple, si je souhaite intégrer un fichier plat dans une table dont le premier champ est un champ auto-incrémenté (clé primaire en l'occurence), le BULK INSERT ne fonctionne pas car la table contient un champ de plus que le fichier source.  
 
Comment faire un script compatible SQL Server 2005 permettant de dire "Remplie tous les champs de la table TOTO avec le fichier TITI sauf le premier champ de TOTO qui est pré-rempli puisqu'auto-incrémenté. Ça revient - je suppose - à mapper les champs du fichier plat sur ma table. Comment doit-on s'y prendre ? Je précise que je cherche à le faire par script, et non par l'interface graphique de Management Studio avec le wizard d'importation ;)
 
D'avance merci  :)

Reply

Marsh Posté le 09-07-2009 à 14:01:11   

Reply

Marsh Posté le 09-07-2009 à 15:06:09    

Je up déjà car je bloque sur le sujet et c'est critique pour moi.

Reply

Marsh Posté le 09-07-2009 à 18:32:44    

Malheureusement, j'ai trouvé la réponse sur MSDN. Il faut utiliser un FILE FORMAT passé en paramètre du BULK INSERT. Le problème est qu'il est hors de question d'écrire 60 file formats puisque j'ai 60 tables à créer.  
 
J'en profite pour poser deux autres questions :
 
- Peut-on faire un BULK INSERT dans une proc stock ?
- Peut-on faire un ALTER TABLE pour ajouter une colonne en spécifiant la position de la colonne à ajouter ? Je suis sous SQL SERVER 2005.

Reply

Marsh Posté le 09-07-2009 à 19:04:53    

Je me réponds :  
 
- Oui
- Non à priori, sauf sous MySQL (mais ça reste une aberration car un SGBD se fiche de l'ordre des colonnes)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed