我有一個數據庫與折扣卡記錄,我需要從主數據庫複製到其他具有相同struckture的信息。需要更新主DB的字段名稱,電話等。我需要的信息有三個表格:1.pers_cards(卡號)。 2.pers_clients(名稱,電話等)。 3個pers_accounts(該表由字段合併前兩個表的CLIENT_ID和ACCOUNT_ID) 我寫的劇本得到的信息,我需要:PostgreSQL,需要從CSV文件更新一些表格
Copy (SELECT pers_cards.card_num, pers_clients.name, pers_clients.address,
pers_clients.phone, pers_clients.mobilephone, pers_clients.email,
pers_clients.birthday,pers_clients.gender_male
FROM pers_cards,pers_accounts,pers_clients
WHERE (
pers_accounts.client_id = pers_clients.client_id
and
pers_cards.acc_id = pers_accounts.acc_id
))
To 'f:/test.csv' With CSV;
現在我需要使用此文件來更新其他BD,與個人信息更新領域(pers_clients.name,pers_clients.phone等),取決於它的卡號。 麻煩的是字段client_id和account_id在不同的表中有不同的值。
CREATE TABLE cards_temp
(card_num varchar, name varchar, address varchar,
phone varchar, mobilephone varchar, email varchar, birthday date, gender_male bool);
COPY cards_temp FROM 'f:/test.csv' DELIMITER ',' CSV;
UPDATE cards cards
SET name = cards_temp.name
FROM cards_temp
WHERE cards_temp.card_num = cards.card_num;
如何更新我的主表:
UPDATE pers_clients
SET name = cards_temp.name
FROM cards_temp
WHERE cards_temp.card_num = (SELECT pers_cards.card_num
FROM pers_cards,pers_accounts,pers_clients
WHERE (
pers_accounts.client_id = pers_clients.client_id and pers_cards.acc_id = pers_accounts.acc_id));
...這是標籤爲'mysql'爲什麼? –
腳本語言是一樣的,不是嗎? – Sanyo4ever
呃,沒有。它們共享一個共同的子集,SQL,但命令語言差別很大。如果是,那麼'postgresql'和'mysql'標籤就沒有意義了。 –