14/09/2004, 03:05
|
| | | Fecha de Ingreso: junio-2004 Ubicación: Al Oeste del Nervion
Mensajes: 47
Antigüedad: 20 años, 7 meses Puntos: 0 | |
Si! Funciona! Gracias una vez mas Mithrandir, no se que haria yo sin ti
De todas formas una ultima pregunta, ya que el tema del Transact SQL (para SQL Server no para Sybase) me interesa mucho me recomendais algun buen libro o si teneis algun buen manual en pdf podeis enviarmelo por correo (privado y os doy mi direccion de correo privada). Un saludo y mil gracias. Aqui os dejo el codigo definitivo. Usarlo cuanto querais
Código:
USE pc21
GO
DECLARE @requete_update nvarchar(500)
DECLARE @requete_insert nvarchar(500)
DECLARE @converts_insert nvarchar(1000)
DROP table produits_temp
SELECT *
INTO produits_temp
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\produits.xls";User ID=Admin;Password=;Extended properties=Excel 5.0' )...produits$
WHERE ref_constr IS NOT NULL
SET @requete_insert='INSERT INTO produit ('
SET @requete_update='UPDATE produit SET '
SET @converts_insert=''
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ref_constr'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN ref_constr nvarchar(30) not null
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'titre_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN titre_prod nvarchar(128) null
SET @requete_insert=@requete_insert+'titre_prod,'
SET @converts_insert=@converts_insert+'CONVERT(nvarchar(128),produits_temp.titre_prod),'
SET @requete_update=@requete_update+'produit.titre_prod=produits_temp.titre_prod,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'disp_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN disp_prod nvarchar(50) null
SET @requete_insert=@requete_insert+'disp_prod,'
SET @converts_insert=@converts_insert+'CONVERT(nvarchar(50),produits_temp.disp_prod),'
SET @requete_update=@requete_update+'produit.disp_prod=produits_temp.disp_prod,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ht_prix_public_e'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN ht_prix_public_e money null
SET @requete_insert=@requete_insert+'ht_prix_public_e,'
SET @converts_insert=@converts_insert+'CONVERT(money,produits_temp.ht_prix_public_e),'
SET @requete_update=@requete_update+'produit.ht_prix_public_e=produits_temp.ht_prix_public_e,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ht_prod_e'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN ht_prod_e money null
SET @requete_insert=@requete_insert+'ht_prod_e,'
SET @converts_insert=@converts_insert+'CONVERT(money,produits_temp.ht_prod_e),'
SET @requete_update=@requete_update+'produit.ht_prod_e=produits_temp.ht_prod_e,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ht_prod_f'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN ht_prod_f
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ttc_prod_e'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN ttc_prod_e
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ttc_prod_f'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN ttc_prod_f
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'taux_marge'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN taux_marge float(8) null
SET @requete_insert=@requete_insert+'taux_marge,'
SET @converts_insert=@converts_insert+'CONVERT(float(8),produits_temp.taux_marge),'
SET @requete_update=@requete_update+'produit.taux_marge=produits_temp.taux_marge,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'id_ss_cat'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN id_ss_cat int null
SET @requete_insert=@requete_insert+'id_ss_cat,'
SET @converts_insert=@converts_insert+'CONVERT(int,produits_temp.id_ss_cat),'
SET @requete_update=@requete_update+'produit.id_ss_cat=produits_temp.id_ss_cat,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'id_mark'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN id_mark int null
SET @requete_insert=@requete_insert+'id_mark,'
SET @converts_insert=@converts_insert+'CONVERT(int,produits_temp.id_mark),'
SET @requete_update=@requete_update+'produit.id_mark=produits_temp.id_mark,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ref_pc21'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN ref_pc21 nvarchar(50) null
SET @requete_insert=@requete_insert+'ref_pc21,'
SET @converts_insert=@converts_insert+'CONVERT(nvarchar(50),produits_temp.ref_pc21),'
SET @requete_update=@requete_update+'produit.ref_pc21=produits_temp.ref_pc21,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'descrip_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN descrip_prod ntext null
SET @requete_insert=@requete_insert+'descrip_prod,'
SET @converts_insert=@converts_insert+'CONVERT(ntext,produits_temp.descrip_prod),'
SET @requete_update=@requete_update+'produit.descrip_prod=produits_temp.descrip_prod,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'caract_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN caract_prod ntext null
SET @requete_insert=@requete_insert+'caract_prod,'
SET @converts_insert=@converts_insert+'CONVERT(ntext,produits_temp.caract_prod),'
SET @requete_update=@requete_update+'produit.caract_prod=produits_temp.caract_prod,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'img_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN img_prod nvarchar(50) null
SET @requete_insert=@requete_insert+'img_prod,'
SET @converts_insert=@converts_insert+'CONVERT(nvarchar(50),produits_temp.img_prod),'
SET @requete_update=@requete_update+'produit.img_prod=produits_temp.img_prod,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'affichage'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN affichage bit null
SET @requete_insert=@requete_insert+'affichage,'
SET @converts_insert=@converts_insert+'CONVERT(bit,produits_temp.affichage),'
SET @requete_update=@requete_update+'produit.affichage=produits_temp.affichage,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'promo'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN promo bit null
SET @requete_insert=@requete_insert+'promo,'
SET @converts_insert=@converts_insert+'CONVERT(bit,produits_temp.promo),'
SET @requete_update=@requete_update+'produit.promo=produits_temp.promo,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'promo_gen'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp ALTER COLUMN promo_gen bit null
SET @requete_insert=@requete_insert+'promo_gen,'
SET @converts_insert=@converts_insert+'CONVERT(bit),produits_temp.promo_gen),'
SET @requete_update=@requete_update+'produit.promo_gen=produits_temp.promo_gen,'
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'ht_prix_achat_e'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN ht_prix_achat_e
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'titre_fournisseur'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN titre_fournisseur
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'remise_frn'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN remise_frn
END
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'produits_temp' AND column_name = 'id_prod'
if (@@ROWCOUNT>=1)
BEGIN
ALTER TABLE produits_temp DROP COLUMN id_prod
END
SET @converts_insert=@converts_insert+'CONVERT(nvarchar(30),produits_temp.ref_constr)'
SET @requete_insert=@requete_insert+'ref_constr) SELECT '
SET @requete_insert=@requete_insert+@converts_insert
SET @requete_insert=@requete_insert+' FROM produits_temp LEFT OUTER JOIN produit ON produits_temp.ref_constr = produit.ref_constr WHERE produit.ref_constr is NULL'
SET @requete_update=@requete_update+'produit.ref_constr=produit.ref_constr FROM produit INNER JOIN produits_temp ON produit.ref_constr=produits_temp.ref_constr WHERE produit.ref_constr=produits_temp.ref_constr'
EXEC (@requete_insert)
EXEC (@requete_update)
GO
EDITO: Si alguien no entiende algo del codigo que me pida ayuda que para eso estamos
Última edición por Txukie; 14/09/2004 a las 03:07 |