Carregar dados em tebelas do SQL Server
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.
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
Curtidas 0
Respostas
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.
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