如果我正在编写数据,我通过SQLAlchemy从Python网上抓取SQL表,并且如果我有一个我正在处理的大型数据集,并希望每天使用新信息更新这些表,我可以处理重复数据吗?遗憾的是,更新似乎不会覆盖之前在表中的数据,而只是添加到表中的现有数据。我应该删除SQL表中的所有数据然后进行更新还是有办法覆盖表中的数据?
修改:
表格如下。我手动将数据写入yc_data_source
和yc
。我使用包含数据yc_node_hist
,yc_param_hist
和curve_date
以及tenor_years
到{{yield_pct
的数据框将数据写入param_1
和param_5
1}}。我有一个更新功能,它将新数据插入到数据框中,具体取决于我从中抓取的网站上是否有新数据,然后将这些数据插入这些表中。
create table yc_data_source
(
id bigint IDENTITY(1,1) PRIMARY KEY,
name varchar(64) NOT NULL,
loader_class varchar(32) NOT NULL
)
create table yc
(
id bigint IDENTITY(1,1) PRIMARY KEY,
ccy char(3) NOT NULL,
fk_yc_data_source bigint NOT NULL FOREIGN KEY REFERENCES yc_data_source(id),
primary_fl bit NOT NULL,
party_id varchar(1024),
typeofbond char(3) NOT NULL,
name varchar(1024) NOT NULL,
parametrized_fl bit NOT NULL,
model varchar(128)
)
create table yc_update
(
id bigint IDENTITY(1,1) PRIMARY KEY,
fk_yc bigint NOT NULL FOREIGN KEY REFERENCES yc(id),
update_time datetime NOT NULL,
curve_date_start date,
curve_date_end date,
success bit NOT NULL,
message varchar(4096)
)
create table yc_node_hist
(
id bigint IDENTITY(1,1) PRIMARY KEY,
fk_yc_update bigint NOT NULL FOREIGN KEY REFERENCES yc_update(id),
curve_date date NOT NULL,
tenor_years float NOT NULL,
yield_pct float NOT NULL
)
create table yc_param_hist
(
id bigint IDENTITY(1,1) PRIMARY KEY,
fk_yc_update bigint NOT NULL FOREIGN KEY REFERENCES yc_update(id),
curve_date date NOT NULL,
param_1 float NOT NULL,
param_2 float,
param_3 float,
param_4 float,
param_5 float,
)