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

Làm cách nào để chèn / truy xuất tệp Excel vào cột varbinary (max) trong SQL Server 2008?

Nếu bạn muốn thực hiện nó trong ADO.NET trực tiếp và các tệp Excel của bạn không quá lớn để chúng có thể vừa với bộ nhớ cùng một lúc, bạn có thể sử dụng hai phương pháp sau:

// store Excel sheet (or any file for that matter) into a SQL Server table
public void StoreExcelToDatabase(string excelFileName)
{
    // if file doesn't exist --> terminate (you might want to show a message box or something)
    if (!File.Exists(excelFileName))
    {
       return;
    }

    // get all the bytes of the file into memory
    byte[] excelContents = File.ReadAllBytes(excelFileName);

    // define SQL statement to use
    string insertStmt = "INSERT INTO dbo.YourTable(FileName, BinaryContent) VALUES(@FileName, @BinaryContent)";

    // set up connection and command to do INSERT
    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdInsert = new SqlCommand(insertStmt, connection))
    {
         cmdInsert.Parameters.Add("@FileName", SqlDbType.VarChar, 500).Value = excelFileName;
         cmdInsert.Parameters.Add("@BinaryContent", SqlDbType.VarBinary, int.MaxValue).Value = excelContents;

         // open connection, execute SQL statement, close connection again
         connection.Open();
         cmdInsert.ExecuteNonQuery();
         connection.Close();
    }
}

Để lấy lại trang tính Excel và lưu trữ nó trong một tệp, hãy sử dụng phương pháp sau:

public void RetrieveExcelFromDatabase(int ID, string excelFileName)
{
    byte[] excelContents;

    string selectStmt = "SELECT BinaryContent FROM dbo.YourTableHere WHERE ID = @ID";

    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdSelect = new SqlCommand(selectStmt, connection))
    {
        cmdSelect.Parameters.Add("@ID", SqlDbType.Int).Value = ID;

        connection.Open();
        excelContents = (byte[])cmdSelect.ExecuteScalar();
        connection.Close();
    }

    File.WriteAllBytes(excelFileName, excelContents);
 }

Tất nhiên, bạn có thể điều chỉnh điều này theo nhu cầu của mình - bạn cũng có thể làm nhiều việc khác - tùy thuộc vào những gì bạn thực sự muốn làm (không rõ ràng lắm so với câu hỏi của bạ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. SQL Server- Làm thế nào để ghi các biến và kết quả truy vấn vào tệp Văn bản?

  2. Làm cách nào để đặt đối chiếu cho một kết nối trong SQL Server?

  3. Nhận kết quả thủ tục được lưu trữ SQL sang định dạng data.frame bằng RODBC

  4. SQL Server - Ưu và nhược điểm của Dirty Reads

  5. Tại sao Lỗi:[Trình quản lý Trình điều khiển ODBC] Không tìm thấy tên nguồn dữ liệu ...? (hoạt động tốt trên môi trường nhà phát triển)