Ao fazer o design de banco de dados, costumo usar tabelas de referência/suporte, como todos nós fazemos. Cada vez que inicio um novo projeto há inevitavelmente tabelas que:
- Tenha um conjunto predefinido de valores.
- Nunca mudará e provavelmente nunca encontrará novos registros (ou muito raramente).
Um exemplo perfeito disso pode ser uma Country
tabela.
create table Country
(
CountryKey int not null identity
,CountryName varchar(64) not null
,IsoNumber int not null
,Iso3 varchar(8) not null
,constraint pk_country primary key clustered (CountryKey)
);
Eu usei várias abordagens diferentes para "hidratar" esses tipos de tabelas, principalmente:
- Um script SQL de hidratação com instruções de inserção.
insert into Country (CountryName, IsoNumber ...) values ('Canada', ...)
Um script SQL de hidratação, lendo do disco, usando
bulk insert
.bulk insert MyDatabase.dbo.Country from ...
E em casos extremos um script programático (f#, python).
Minha abordagem preferida é a primeira se todas as tabelas contiverem apenas alguns registros. Se as tabelas estiverem além desse limite, normalmente gosto de um script lendo arquivos CSV. Eu escolho usar CSV por ser compacto e legível por humanos.
Como todos os outros estão lidando com essa situação?
Eu percebo que esta é uma questão um tanto opinativa. Mas achei que valia a pena perguntar, pois inevitavelmente terá respostas concretas com fundamentação técnica.