Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tải tệp CSV lên máy chủ SQL

Đầu tiên, bạn không cần công cụ lập trình. Bạn có thể tải trực tiếp tệp CSV lên Cơ sở dữ liệu SQL bằng các công cụ quản lý SQL. Tuy nhiên, nếu bạn thực sự cần làm điều đó thông qua lập trình, chỉ cần đọc bên dưới.

Cá nhân tôi nghĩ cách tiếp cận này là cách hiệu quả nhất và dễ thực hiện nhất thông qua lập trình.

Nói chung, bạn có thể đạt được nó trong hai bước

1 bước là đọc tệp CSV và giữ các bản ghi dưới dạng DataTable .
Thứ 2 bước là lưu trữ DataTable đã truy xuất vào Bảng cơ sở dữ liệu SQL dưới dạng mục nhập hàng loạt

Đây là một hàm trả về Dữ liệu Tệp CSV dưới dạng DataTable . Gọi và Lưu nó trong bộ nhớ và bạn có thể làm bất cứ điều gì bạn muốn với nó.

Hàm này sẽ trả về tệp CSV Read vào DataTable.

private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
    {
        DataTable csvData = new DataTable();
        try
        {
          using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
             {
                csvReader.SetDelimiters(new string[] { "," });
                csvReader.HasFieldsEnclosedInQuotes = true;
                string[] colFields = csvReader.ReadFields();
                foreach (string column in colFields)
                {
                    DataColumn datecolumn = new DataColumn(column);
                    datecolumn.AllowDBNull = true;
                    csvData.Columns.Add(datecolumn);
                }
                while (!csvReader.EndOfData)
                {
                    string[] fieldData = csvReader.ReadFields();
                    //Making empty value as null
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                        if (fieldData[i] == "")
                        {
                            fieldData[i] = null;
                        }
                    }
                    csvData.Rows.Add(fieldData);
                }
            }
        }
        catch (Exception ex)
        {
           return null;
        }
        return csvData;
    }
  }

SQLBulkCopy - Sử dụng chức năng này để chèn DataTable Đã truy xuất vào Bảng Sql

static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvFileData)
{
    using(SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=yourDB;Integrated Security=SSPI;"))
    {
         dbConnection.Open();
         using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
         {
             s.DestinationTableName = "Your table name";
             foreach (var column in csvFileData.Columns)
                 s.ColumnMappings.Add(column.ToString(), column.ToString());
             s.WriteToServer(csvFileData);
         }
     }

Nguồn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DateTime2 so với DateTime trong SQL Server

  2. Cập nhật một bước công việc cho một công việc đại lý máy chủ SQL (T-SQL)

  3. Giá trị cột nhận dạng máy chủ SQL bắt đầu từ 0 thay vì 1

  4. Cách bật tính năng ghi dữ liệu thay đổi (CDC) trên toàn bộ bảng HOẶC bật CDC trên bảng có danh sách cột trong SQL Server

  5. Làm thế nào để tìm mức lương tối đa thứ ba hoặc thứ n từ bảng lương?