Carregar dados em tebelas do SQL Server

01/10/2020

0

Bom dia, galera!

Preciso carregar dados de um arquivo csv para várias tabelas do SQL Server.

Estou usando o C# que cria um DataTable com os dados para aí acionar uma Procedure para salvar os dados no SQL. Se fosse em uma tabela única, seria tranquilo, mas o problema é que os dados dessa tabela serão carregados em 3 tabelas.

Por exemplo, simplificando para duas: o arquivo tem os seguintes campos: CPF, Nome, situação. Existiria aí uma tabela Cidadão(CPF, Nome, co_situacao) e outra Situação(co_situacao, no_situacao).

Já me disseram que teria que criar uma Table Type, que seria tipo uma tabela temporária, carregar nela os dados e aí fazer uma Procedure que carregue os dados nessas duas tabelas. Mas não tenho ideia de como fazer esse tipo de Procedure.
Marcos Carvalho

Marcos Carvalho

Responder

Posts

01/10/2020

Edilson Lemos

Bom dia, galera!

Preciso carregar dados de um arquivo csv para várias tabelas do SQL Server.

Estou usando o C# que cria um DataTable com os dados para aí acionar uma Procedure para salvar os dados no SQL. Se fosse em uma tabela única, seria tranquilo, mas o problema é que os dados dessa tabela serão carregados em 3 tabelas.

Por exemplo, simplificando para duas: o arquivo tem os seguintes campos: CPF, Nome, situação. Existiria aí uma tabela Cidadão(CPF, Nome, co_situacao) e outra Situação(co_situacao, no_situacao).

Já me disseram que teria que criar uma Table Type, que seria tipo uma tabela temporária, carregar nela os dados e aí fazer uma Procedure que carregue os dados nessas duas tabelas. Mas não tenho ideia de como fazer esse tipo de Procedure.


para criar um procedimento abre o SQLQuery no banco e coloca:

CREATE Proc SP_InserirTecnico

@Login nvarchar (50),
@Senha nvarchar (50),
@Nome nvarchar (100),
@Nivel nvarchar (50),
@Email nvarchar (100),
@DataNascimento datetime
as
insert into TB_Tecnicos Values (@Login,@Senha,@Nome,@Nivel,@Email,@DataNascimento)

para chamar no form basta
public void Salvar(CacheTecnicos Tecnicos) // "CacheTecnicos" refere ao Encapsulamento
{
SqlCommand cmd = new SqlCommand("SP_InserirTecnico", conexao);
cmd.CommandType = CommandType.StoredProcedure;
conexao.Conectar();
cmd .Parameters.AddWithValue("@login", Tecnicos.login.ToString());
cmd .Parameters.AddWithValue("@senha", Tecnicos.senha.ToString());
cmd .Parameters.AddWithValue("@nome", Tecnicos.nome.ToString());
cmd .Parameters.AddWithValue("@Nivel", Tecnicos.nivel.ToString());
cmd .Parameters.AddWithValue("@email", Tecnicos.email.ToString());
cmd .Parameters.AddWithValue("@dataNascimento", Tecnicos. dataNascimento);

int Id_Tc = Convert.ToInt32(cmd.ExecuteNonQuery());
conexao.Desconectar();
}

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar