我正在将Excel文件导入SQL Server数据库。该代码工作正常,但是我当前正在做的方式是删除(清除表)表数据。
string ssqltable = "tStudent";
string myexceldataquery = "select id,student,rollno,course from [sheet1$]";
try
{
string sexcelconnectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + excelfilepath + "; Extended Properties=\"Excel 12.0; HDR=Yes; IMEX=2\"";
string ssqlconnectionstring = "Data Source=DELL\\SQLSERVER1;Trusted_Connection=True;DATABASE=Test;CONNECTION RESET=FALSE";
SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);
SqlCommand sqlcmd = new SqlCommand(@"MERGE tStudent AS target
USING (select ID, STUDENT , ROLLNO from @source) as source
ON (source.ID = target.ID)
WHEN MATCHED THEN
UPDATE SET Student = source.Student,
ROLLNO = source.ROLLNO
WHEN NOT MATCHED THEN
INSERT (ID, STUDENT , ROLLNO)
VALUES (source.id, source.Student, source.RollNo);", sqlconn);
******************************************
SqlParameter param = new SqlParameter();
sqlcmd.Parameters.AddWithValue("@source", dr);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.tStudent";
******************************************
sqlconn.Open();
sqlcmd.ExecuteNonQuery();
sqlconn.Close();
//series of commands to bulk copy data from the excel file into our sql table
OleDbConnection oledbconn = new OleDbConnection(sexcelconnectionstring);
OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
oledbconn.Open();
OleDbDataReader dr = oledbcmd.ExecuteReader();
SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring);
bulkcopy.DestinationTableName = ssqltable;
bulkcopy.WriteToServer(dr);
while (dr.Read())
{
//bulkcopy.WriteToServer(dr);
}
oledbconn.Close();
Console.WriteLine(".xlsx file imported succssessfully into database.", bulkcopy.NotifyAfter);
}
请参阅 * 部分。我已经在Sqlparameters中分配了OleDb DataRreader dr,但是稍后将在代码中声明它。请指导我如何构造代码。
示例将不胜感激。
鉴于您的excel文件与表具有相同的结构,并且您想要更新而不是仅插入表, 最简单的方法
是使用“合并”和“表值参数”
SqlCommand cmd = new SqlCommand(@"MERGE tStudent AS target
USING (select ID, STUDENT , ROLLNO from @source) as source
ON (source.ID = target.ID)
WHEN MATCHED THEN
UPDATE SET Student = source.Student,
ROLLNO = source.ROLLNO
WHEN NOT MATCHED THEN
INSERT (ID, STUDENT , ROLLNO)
VALUES (source.id, source.Student, source.RollNo);"
, sqlconn);
SqlParameter param cmd.Parameters.AddWithValue("@source", dr);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.tStudent";
您的其他选择包括循环,使用登台表,将数据作为xml数据或字符串数据传递或使用ETL工具(如SSIS)。
问题内容: 如何在不使用导入向导的情况下使用sql查询将Excel文件导入到sqlserver2008 Express Edition中的新表中 谢谢普拉迪 问题答案: 有一个Microsoft知识库文章,列出了所有可能的方法。 http://support.microsoft.com/kb/321686 我认为,使用或将是没有向导的最简单方法。(请参阅分布式查询) 请参阅OPENROWSET文档
如何将CSV文件导入MySQL表?我想把第一行数据用作列名。 我读到如何将CSV文件导入MySQL表?,但是唯一的答案是使用GUI而不是shell?
问题内容: 我以以下模式将数据库表表示为文本文件: 我需要将此数据导入到SQL Server 2008数据库表中。我已经创建了具有与模式匹配的类型的表。 如何将这些数据导入表? 编辑:通过选择答案来解决。请注意将来遇到任何麻烦的人:数据类型需要转换。参考:http : //social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thre
问题内容: 可以将.css文件导入.less文件…吗? 我对较少的内容非常熟悉,并将其用于我的所有开发。我经常使用如下结构: 所有导入文件都是其他.less文件,并且可以正常运行。 我当前的问题是:我想将.css文件导入.less,以引用.css文件中使用的样式,如下所示: .css文件包含一个名为的类,但是当我尝试编译.less文件时,出现错误 .less文件不会导入.css文件,仅导入其他.l
问题内容: 更新 在我发布此问题之后的第二秒,由于对结果查询的语法突出显示,我看到了出了什么问题:该字符串未以闭合斜线开头。现在我将其更改为: 但是,这提出了一个新问题:为什么PDO对象没有为此向我吐出错误?手动执行查询肯定会返回一个错误,指出没有名为的字段,最后是逗号。为什么我没有收到任何错误?有任何想法吗? PS:关于解决我的问题的SO语法突出显示方面有什么想法吗?:-) 我将原始问题留作参考
我创建了一个csr文件,并将该文件发送给我的证书团队,他们给出了链cer(内部singed certificate)文件,我试图使用Ikeyman接收cer文件,但它不允许我接收,我使用了keytool命令 keytool-import-trustcacerts-alias dev-file test.cer-keystore key.jks