我正在寻找有关如何从 .NET Web 应用程序创建与数据库的接口以从 Excel 文件上传数据的任何最佳实践或想法我应该使用一种允许加载所有记录并标记错误的机制还是应该我使用一种在发生错误时停止加载的机制。
我以前从来没有处理过这种类型的要求,所以任何帮助都会非常棒!
谢谢
我会尝试以下过去运作良好的方法。
您应该上传数据,然后在验证检查失败时对其进行标记。对于实际加载数据,您有几个选项:
.
public void Load() {
bool OK = File.Exists(_filename);
if (OK) {
string sql = String.Format("Select * from {0}", FileName);
OleDbConnection csv = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand(sql, csv);
OleDbDataReader rs = null;
SqlConnection db = null;
SqlCommand clear = null;
SqlBulkCopy bulk_load = null;
try {
// Note two connections: one from the csv file
// and one to the database;
csv = new OleDbConnection();
csv.ConnectionString = ConnectionString;
csv.Open();
cmd = new OleDbCommand(sql, csv);
rs = cmd.ExecuteReader();
// Dung out the staging table
db = // [Create A DB conneciton Here]
clear = new SqlCommand("Truncate table Staging", db); // Left to the reader
clear.ExecuteNonQuery();
// Import into the staging table
bulk_load = new SqlBulkCopy(db);
bulk_load.DestinationTableName = Destination; // Actually an instance var
bulk_load.WriteToServer(rs);
} catch (Exception ee) {
string summary = ee.Message;
string detail = ee.StackTrace;
//Notify(DisplayType.error, summary, detail);
} finally {
if (rs != null) rs.Close();
if (csv != null) csv.Close();
if (bulk_load != null) bulk_load.Close();
}
}
}
如果您的数据库中的数据完整性很重要,则不允许导入有错误或不符合您的数据库验证要求的数据。
由于这些是 Excel 文件,用户应该很容易更正 Excel 文件中的数据,而不是尝试使用其他界面来修复数据。只需确保错误消息将用户引导至问题所在的字段并清楚地解释问题所在。
你想把 excel 文件作为 blob 放在数据库中吗?还是您想解析文件并将文件中的记录放入数据库中?
我假设是后者。
作为用户,我希望可以选择知道错误是什么,以便我可以修复它们并重试。我认为我如何重试取决于我上传了多少数据。
我会尝试做一个混合解决方案..如果只有几个错误显示一个屏幕来纠正这些错误,以便用户可以快速继续。如果有大量错误,您应该可以做到并让用户重新尝试。
至于数据库。要么有一个单独的表格供上传,直到它们被检查并获取您的“真实”数据,或者有一个 UploadUniqueId 列,这样您就可以回滚任何上传而不会大惊小怪。
删除表名,其中 UploadUniqueId = 'GUID'