توضیحات و دانلود

وارد کردن CSV (فایل متنی) در پایگاه داده با استفاده از SqlBulkCopy در ASP.Net MVC
0 0
وارد کردن CSV (فایل متنی) در پایگاه داده با استفاده از SqlBulkCopy در ASP.Net MVC

 با سلام در این مقاله با یک مثال توضیح خواهیم داد که چگونه داده های CSV (فایل متنی) را با استفاده از SqlBulkCopy در ASP.Net MVC Razor در بانک اطلاعاتی وارد کنید .
داده های فایل دانلود شده File Text) CSV) با استفاده از کلاس فایل خوانده می شوند و داده های خوانده شده با استفاده از SqlBulkCopy در پایگاه داده SQL سرور وارد می شوند .
همانطور که از نام آن مشخص است ، کلاس SqlBulkCopy را وارد می کند و از این رو تمام ردیف های DataTable به راحتی از کلاس SqlBulkCopy قابل خواندن و درج می باشند .

بانک اطلاعات
از جدول مشتریان با طرحی به شرح زیر استفاده کرده ایم. CustomerId یک ستون افزایش خودکار است.

توجه :

می توانید جدول بانک اطلاعاتی SQL را با کلیک روی لینک دانلو کنید.   فایل SQL را بارگیری کنید

فضاهای نام
شما باید نامهای زیر را وارد کنید.

using System.IO;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;

Controller
Controller از دو روش تشکیل شده است.
روش  انجام عملیات GET
در داخل این روش Action ، یک مجموعه Generic List خالی از شیء کلاس CustomerModel بازگردانده می شود.
روش کار با عملکرد POST برای بارگذاری و خواندن فایل CSV
با انتخاب فایل CSV و کلیک بر روی دکمه Import ، این روش Action استفاده می شود و فایل بارگذاری شده را در پارامتر HttpPostedFileBase دریافت می کند.
فایل CSV آپلود شده در پوشه ای به نام Uploads ذخیره می شود .
داده های فایل CSV با استفاده از روش File ReadAllText در یک متغیر رشته ای خوانده می شوند.
داده های فایل CSV با استفاده از نویسه های New Line (\ n) و کاما (،) تقسیم و با استفاده از یک حلقه ، داده ها در مجموعه Generic لیست اشیاء کلاس CustomerModel کپی می شوند .

اکنون ارتباطی با بانک اطلاعاتی برقرار شده است و هدف SqlBulkCopy شروع می شود و با استفاده از خاصیت DestinationTableName نام جدول را مشخص میکنیم.
سرانجام ستون ها ترسیم و تمام ردیف های DataTable در جدول SQL Server وارد می شوند. 

توجه :

ظاهر ستون های DataTable و جدول SQL Server اختیاری است و شما باید فقط در مواردی که DataTable و / یا جدول SQL Server شما دارای تعداد ستون های یکسانی نباشد یا نام ستون ها متفاوت باشد انجام دهید .

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
 
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase postedFile)
    {
        string filePath = string.Empty;
        if (postedFile != null)
        {
            string path = Server.MapPath("~/Uploads/");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
 
            filePath = path + Path.GetFileName(postedFile.FileName);
            string extension = Path.GetExtension(postedFile.FileName);
            postedFile.SaveAs(filePath);
 
            //Create a DataTable.
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
                                new DataColumn("Name", typeof(string)),
                                new DataColumn("Country",typeof(string)) });
 
 
            //Read the contents of CSV file.
            string csvData = System.IO.File.ReadAllText(filePath);
 
            //Execute a loop over the rows.
            foreach (string row in csvData.Split('\n'))
            {
                if (!string.IsNullOrEmpty(row))
                {
                    dt.Rows.Add();
                    int i = 0;
 
                    //Execute a loop over the columns.
                    foreach (string cell in row.Split(','))
                    {
                        dt.Rows[dt.Rows.Count - 1][i] = cell;
                        i++;
                    }
                }
            }
 
            string conString = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
            using (SqlConnection con = new SqlConnection(conString))
            {
                using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
                {
                    //Set the database table name.
                    sqlBulkCopy.DestinationTableName = "dbo.Customers";
 
                   //[OPTIONAL]: Map the DataTable columns with that of the database table
                    sqlBulkCopy.ColumnMappings.Add("Id", "CustomerId");
                    sqlBulkCopy.ColumnMappings.Add("Name", "Name");
                    sqlBulkCopy.ColumnMappings.Add("Country", "Country");
 
                    con.Open();
                    sqlBulkCopy.WriteToServer(dt);
                    con.Close();
                }
            }
        }
 
        return View();
    }
}

View
View شامل یک عنصر HTML FileUpload و یک دکمه ارسال است که در یک عنصر فرم قرار دارد.
فرم HTML با استفاده از روش Html.BeginForm ایجاد شده است که پارامترهای زیر را می پذیرد.
ActionName - نام عمل در این حالت Index است.
ControllerName - نام Controller در این حالت Home است.
FormMethod - این روش فرم یعنی GET یا POST را مشخص می کند. در این حالت روی POST تنظیم می شود.
HtmlAttributes - این مجموعه می تواند ویژگی های فرم اضافی را مشخص کند. در اینجا باید enctype = "multipart / form-data" را مشخص کنیم که برای بارگذاری فایل ها ضروری است.

@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" name="postedFile"/>
        <input type="submit" value="Import"/>
    }
</body>
</html>

عکسهای صفحه
فایل CSV

جدول حاوی داده های فایل CSV

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :