sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 の varbinary(max) 列に Excel ファイルを挿入/取得するにはどうすればよいですか?

    そのままの ADO.NET で実行したい場合で、Excel ファイルが大きすぎて一度にメモリに収まらない場合は、次の 2 つの方法を使用できます。

    // Excel シート (またはその他のファイル) を SQL Server テーブルに保存 public void StoreExcelToDatabase(string excelFileName){ // ファイルが存在しない場合 --> 終了 (メッセージ ボックスか何か) if (!File.Exists(excelFileName)) { return; } // ファイルのすべてのバイトをメモリに取得 byte[] excelContents =File.ReadAllBytes(excelFileName); // 文字列を使用する SQL ステートメントを定義します insertStmt ="INSERT INTO dbo.YourTable(FileName, BinaryContent) VALUES(@FileName, @BinaryContent)"; // INSERT を実行するための接続とコマンドを設定します。 @FileName", SqlDbType.VarChar, 500).Value =excelFileName; cmdInsert.Parameters.Add("@BinaryContent", SqlDbType.VarBinary, int.MaxValue).Value =ExcelContents; // 接続を開き、SQL ステートメントを実行し、再度接続を閉じます connection.Open(); cmdInsert.ExecuteNonQuery(); connection.Close(); }}  

    Excel シートを取得してファイルに保存するには、次のメソッドを使用します:

    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); }  

    もちろん、これをニーズに合わせて調整することもできます。本当にやりたいことによっては、他の多くのことを行うこともできます (質問からはあまり明確ではありません)。



    1. .NETの文字列の側面

    2. mysqldumpを使用せずにデータベースをコピー/複製します

    3. Docker / Kubernetesを使用してPostgreSQLフェールオーバークラスターをモデル化するにはどうすればよいですか?

    4. ユークリッド距離