c#导入excel入sql server数据库,但是只保留6个月的数据。
我需要将工资表导入到数据库表中,但是有个要求是数据表中只保留6个月的数据。excel最后一列有个年、月,如果我把16.7月的数据导入进去,那么就要挤掉16.1月及之前月份...
我需要将工资表导入到数据库表中,但是有个要求是数据表中只保留6个月的数据。excel最后一列有个年、月,如果我把16.7月的数据导入进去,那么就要挤掉16.1月及之前月份的数据。只保留16.2月至16.7月的数据。请问这个该怎么做?是在数据库中实现还是在c#程序中呢?我是新手,求教具体的方法,最好是要有代码或者例子,谢谢!
展开
展开全部
需要存储过程(删除部分)和C#共同使用,C#负责写入 及调用删除的存储过程
DataTable ExcelTable;
DataSet ds = new DataSet();
OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 你的excel文件路径 + ";" + "Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;\""); //创建与Excel 的 oledb 连接
objConn.Open();
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();//获取 Excel 的表名,默认值是sheet1
string strSql = "select * from [" + tableName + "]";
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
myData.Fill(ds, tableName);//填充数据
objConn.Close();
ExcelTable = ds.Tables[tableName]; //生成datatale
int row = ExcelTable.Rows.Count;
int column = ExcelTable.Columns.Count;
string err = "Passed";
for (int i = 1; i < row; i++)
{ // 逐行执行插入命令
string sql = "insert into tabel_name values(";
for (int j = 0; j < 4; j++) // 拼装SQL命令
{
string InsVu=chk_data(ExcelTable.Rows[i][j].ToString().Trim());
sql = sql + "'" + InsVu + "',";
}
try
{
sql = sql + "'')"; //以下链接数据库并
string strCon = "Data Source=数据库SID;user=XXXX;password=XXXXXX;Unicode=True;Omit Oracle Connection Name=True;";
OracleConnection conn = new OracleConnection(strCon);
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
// 你的错误提示
err="Failed";
break;
}
}
}
if (err=="Passed")
{
try
{
string strCon = "Data Source=数据库SID;user=XXXX;password=XXXXXX;Unicode=True;Omit Oracle Connection Name=True;";
OracleConnection conn = new OracleConnection(strCon);
conn.Open();
OracleCommand cmd = new OracleCommand(存储过程, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
// 你的错误提示
err="Failed";
break;
}
}
Oracle 存储过程
create or replace PROCEDURE PROC_ITEM_DELETE
as
counts Number;
v_count number;
-- 默认日期格式为 yyyymm
begin
select MAX(data_column) from tabel_name;
delete from tabel_name where data_column<data_column-6;
end;
展开全部
C# 链接Excel也可进行数据筛选,筛选完后再导入sql server
共享你的Excel及你的Excel样档看看
共享你的Excel及你的Excel样档看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先全部导入进去 再删掉6个月之前的数据就可以了
追问
这个对于技术人员来说好办,可是这是做系统,不能每次都需要技术人员进入后台数据库来操作啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询