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.
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
Curtir tópico
+ 0
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.
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
Clique aqui para fazer login e interagir na Comunidade :)