Carga Datosp1.sql
Carga Datosp1.sql
/*El orden al insertar los datos es importante ya que algunas inserciones dependen
de los valores de otras.*/
/*TABLA PRODUCTO*/
INSERT INTO fsdb189.producto(nombre, coffea, varietal, origen, tipo_tostado,
descafeinado)
SELECT DISTINCT
product,
coffea,
varietal,
origin,
CASE
WHEN roasting = 'high-roast' THEN 'torrefacto'
WHEN roasting = 'blend' THEN 'mezcla'
ELSE 'natural'
END AS tipo_tostado,
CASE
WHEN decaf = 'yes' THEN 1
WHEN decaf = 'no' THEN 0
ELSE 1
END AS descafeinado
FROM fsdb.catalogue
WHERE roasting IN ('high-roast', 'blend', 'natural')
AND decaf IN ('yes', 'no');
/*TABLA FORMATO_COMERCIALIZACION*/
INSERT INTO fsdb189.formato_comercializacion(tipo, envasado)
SELECT DISTINCT tipo, envasado
FROM (
SELECT
CASE
WHEN format = 'prepared' THEN 'preparado'
WHEN format = 'capsules' THEN 'c�psulas'
WHEN format = 'ground' THEN 'molido'
WHEN format = 'raw bean' THEN 'grano crudo'
WHEN format = 'roasted bean' THEN 'grano tostado'
WHEN format = 'freeze dried' THEN 'liofilizado'
ELSE 'molido'
END AS tipo,
packaging AS envasado
FROM fsdb.catalogue
WHERE format IN ('prepared', 'capsules', 'ground', 'raw bean', 'roasted bean',
'freeze dried')
) c
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.formato_comercializacion fc
WHERE fc.tipo = c.tipo
AND fc.envasado = c.envasado
);
/*TABLA PRODUCTO_FORMATO_COMERCIALIZACI�N*/
INSERT INTO fsdb189.producto_formato_comercializacion(producto,
formato_comercializacion)
SELECT p.id, f.id
FROM fsdb.catalogue c
JOIN producto p ON p.nombre = c.product
JOIN formato_comercializacion f ON f.tipo = 'grano crudo' -- Aqu� especifica el
tipo de formato de comercializaci�n que deseas relacionar
WHERE c.roasting IN ('high-roast', 'blend', 'natural')
AND c.decaf IN ('yes', 'no');
/*TABLA ART�CULO*/
INSERT INTO fsdb189.articulo(codigo_barras, descripcion, precio, cantidad_stock,
stock_minimo, stock_maximo)
SELECT DISTINCT
barcode,
packaging,
CASE WHEN REGEXP_LIKE(cost_price, '^\d+(\.\d+)?$') THEN TO_NUMBER(cost_price)
ELSE 5 END,
cur_stock,
min_stock,
max_stock
FROM fsdb.catalogue ;
/*TABLA PUBLICACION*/
INSERT INTO fsdb189.publicacion(puntuacion, titulo, likes, comentarios,
valoraciones, cliente, fecha_pub, hora_pub)
SELECT DISTINCT
score,
title,
likes,
comentarios,
valoraciones,
cliente,
/*TABLA DIRECCI�N*/
INSERT INTO fsdb189.direccion(tipo_de_via,nombre_via, num_inm, num_bloque,
escalera, piso, puerta, codigo_postal, localidad, pais)
SELECT
dliv_waytype,
dliv_wayname,
dliv_gate,
dliv_block,
dliv_stairw,
dliv_floor,
dliv_door,
dliv_zip,
dliv_town,
dliv_country
FROM fsdb.trolley ;
/*TABLA PROVEEDOR*/
INSERT INTO fsdb189.proveedor(nombre,cif, nombre_completo, correo,
telefono,cuenta_bancaria, direccion_postal, pais)
SELECT DISTINCT
supplier,
prov_taxid,
prov_person,
prov_email,
prov_mobile,
prov_bankacc,
prov_address,
prov_country
FROM fsdb.catalogue
WHERE supplier IS NOT NULL;
/*TABLA PEDIDO*/
INSERT INTO fsdb189.pedido(fecha, hora, cantidad, articulo, estado, precio,
fecha_ent, hora_ent)
SELECT DISTINCT
TO_DATE(t.orderdate, 'YYYY-MM-DD'),
t.ordertime,
t.quantity,
t.barcode,
'draft' AS estado_default,
t.base_price,
TO_DATE(t.dliv_date, 'YYYY-MM-DD'),
t.dliv_time
FROM fsdb.trolley t
JOIN fsdb189.articulo a ON t.barcode = a.codigo_barras;
/*TABLA TARJETA_CREDITO*/
INSERT INTO fsdb189.tarjeta_credito(numero, titular, compania, fecha_venc)
SELECT DISTINCT
card_number,
card_holder,
card_company,
CASE
WHEN REGEXP_LIKE(card_expiratn, '^[0-9]{4}$') THEN TO_DATE('01/' ||
SUBSTR(card_expiratn, 1, 2) || '/' || '20' || SUBSTR(card_expiratn, 3, 2),
'DD/MM/YYYY')
ELSE TO_DATE('01/10/2026', 'DD/MM/YYYY')
END AS fecha_venc
FROM fsdb.trolley
WHERE card_number IS NOT NULL;
/*TABLA TIPO_PAGO*/
INSERT INTO fsdb189.tipo_pago(nombre)
SELECT DISTINCT
CASE
WHEN payment_type = �bank transfer� THEN �transferencia bancaria�
WHEN payment_type = �credit card� THEN �tarjeta de cr�dito�
ELSE �COD�
END AS nombre
FROM fsdb.trolley
WHERE payment_type IN(�bank transfer�, �COD�, �credit card�);
/*TABLA OFERTA_ART�CULOS*/
INSERT INTO fsdb189.oferta_articulos(proveedor, articulo, coste)
SELECT
c.prov_taxid AS proveedor,
c.barcode AS articulo,
CASE
WHEN REGEXP_LIKE(c.cost_price, '^\d+(\.\d+)?$') THEN
TO_NUMBER(c.cost_price)
ELSE 5
END AS coste
FROM fsdb.catalogue c
WHERE prov_taxid IS NOT NULL;
/*TABLA CLIENTE*/
INSERT INTO fsdb189.cliente(correo, telefono, nombre, apellido1, apellido2,
datos_tarjeta, direccion_envio, direccion_facturacion, fecha_rel)
SELECT DISTINCT
client_email,
client_mobile,
client_name,
client_surn1,
client_surn2,
card_number,
dliv_zip AS direccion_envio,
bill_zip AS direccion_facturacion,
reg_date
FROM fsdb.trolley t
JOIN direccion ON t.dliv_zip = direccion.id
JOIN direccion ON t.bill_zip = direccion.id
JOIN tarjeta_credito ON t.card_number = tarjeta_credito.numero;
/*TABLA CLIENTE_REGISTRADO*/
INSERT INTO fsdb189.cliente_registrado(username, contrasena, fecha_reg, hora_reg,
cliente, pref_contacto)
SELECT DISTINCT
t.username,
t.user_passw,
TO_DATE(t.reg_date, 'YYYY/MM/DD') AS fecha_reg,
t.reg_time,
c.id,
'correo electr�nico' AS pref_contacto
FROM fsdb.trolley t, cliente c
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.cliente_registrado cr
WHERE cr.username = t.username)
AND username IS NOT NULL
AND NOT EXISTS(
SELECT 1
FROM fsdb189.cliente_registrado cr
WHERE cr.cliente = c.id);
/*TABLA PEDIDO_CLIENTE*/
INSERT INTO fsdb189.pedido_cliente(cliente,fecha,direccion)
SELECT DISTINCT
c.id,
TO_DATE(t.orderdate, �YYYY/MM/DD�) AS fecha,
d.id
FROM fsdb.trolley t, direccion d, cliente c;
/*TABLA ARTICULO_PEDIDO_CLIENTE */
INSERT INTO fsdb189.articulo_pedido_cliente(cliente, fecha, direccion, articulo,
cantidad, tipo_pago, tarjeta_cred, fecha_entrega, precio_unitario, precio_total)
SELECT DISTINCT
u.id,
l.fecha,
s.direccion,
t.barcode,
t.quantity,
t.payment_tipe
n.id,
t.dliv_date,
t.base_price,
c.coste_price
FROM fsdb.trolley t, tarjeta_credito n, fsdb.catalogue c, cliente u, pedido l,
direccion s
WHERE p.cliente IS NOT NULL
AND p.fecha IS NOT NULL
AND p.direccion IS NOT NULL
AND t.barcode IS NOT NULL
AND t.quantity IS NOT NULL
AND t.payment_type IS NOT NULL
AND n.id IS NOT NULL
AND t.dliv_date IS NOT NULL
AND t.base_price IS NOT NULL
AND c.coste_price IS NOT NULL;
/*TABLA DESCUENTO */
FROM fsdb.trolley, cliente;
INSERT INTO fsdb189.descuento(porcentaje, fecha_cad, cliente)
SELECT DISTINCT
discount,
�un mes de validaci�n� AS fecha_cad,
c.id AS cliente
FROM fsdb.trolley t, cliente c
WHERE discount <> '0 %'
GROUP BY discount, c.id;
/*TABLA VALORACION*/
INSERT INTO fsdb189.valoracion(producto, cliente, valoracion)
SELECT DISTINCT
c.codigo_barras,
t.id,
score
FROM fsdb.posts, articulo c, cliente t;
/*TABLA COMENTARIO*/
INSERT INTO fsdb189.comentario(producto, referencia, cliente, descripcion)
SELECT DISTINCT
p.id,
d.codigo_barras,
c.id,
text
FROM cliente c, articulo d, producto p, fsdb.posts;
/*TABLA PUBLICACION*/
INSERT INTO fsdb189.publicacion(puntuacion, titulo, likes, comentarios,
valoraciones, cliente, fecha_pub, hora_pub)
score,
title,
likes,
c.id,
v.id,
t.id,
TO_DATE(t.post_date, 'YYYY-MM-DD') AS fecha_pub,
post_time,
FROM fsdb.posts, comentario c, valoracion v, cliente t
WHERE NOT EXISTS (
SELECT 1
FROM fsdb189.publicacion cr
WHERE cr.title = title)
########################################################################
/*Creaci�n secuencia auto_increment*/
CREATE SEQUENCE creacion_id
START WITH 1
INCREMENT BY 1
NOMAXVALUE;
/* TABLA FORMATO_COMERCIALIZACION */
CREATE OR REPLACE TRIGGER trigger_formato_comercializacion
BEFORE INSERT ON formato_comercializacion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA PEDIDO*/
CREATE OR REPLACE TRIGGER trigger_pedido
BEFORE INSERT ON formato_pedido
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA OFERTA_ARTICULOS*/
CREATE OR REPLACE TRIGGER trigger_oferta_articulos
BEFORE INSERT ON oferta_articulos
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA CLIENTE */
CREATE OR REPLACE TRIGGER trigger_cliente
BEFORE INSERT ON cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/*TABLA CLIENTE_REGISTRADO*/
CREATE OR REPLACE TRIGGER trigger_cliente_registrado
BEFORE INSERT ON cliente_registrado
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA PEDIDO_CLIENTE */
CREATE OR REPLACE TRIGGER trigger_pedido_cliente
BEFORE INSERT ON oferta_pedido_cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/*TABLA TIPO_PAGO*/
CREATE OR REPLACE TRIGGER trigger_tipo_pago
BEFORE INSERT ON tipo_pago
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA ARTICULO_PEDIDO_CLIENTE*/
CREATE OR REPLACE TRIGGER trigger_articulo_pedido_cliente
BEFORE INSERT ON articulo_pedido_cliente
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA DIRECCION */
CREATE OR REPLACE TRIGGER trigger_direccion
BEFORE INSERT ON direccion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA DESCUENTO */
CREATE OR REPLACE TRIGGER trigger_descuento
BEFORE INSERT ON descuento
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA VALORACION */
CREATE OR REPLACE TRIGGER trigger_valoracion
BEFORE INSERT ON valoracion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA PUBLICACION */
CREATE OR REPLACE TRIGGER trigger_publicacion
BEFORE INSERT ON publicacion
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/
/* TABLA COMENTARIO */
CREATE OR REPLACE TRIGGER trigger_comentario
BEFORE INSERT ON comentario
FOR EACH ROW
BEGIN
SELECT creacion_id.NEXTVAL INTO :NEW.id FROM dual;
END;
/