Carregar dados em tebelas do SQL Server

SQL Server

SQL

C#

01/10/2020

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

Curtidas 0

Respostas

Edilson Lemos

Edilson Lemos

01/10/2020

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();
}

GOSTEI 0
POSTAR