ファイルをバイナリデータに変換してDBに登録
投稿者 YuO  (社会人)
投稿日時
2017/6/8 19:28:45
ファイルは全てバイナリデータですが,
> EXCELファイルをバイナリデータに変換して
で言う「バイナリデータ」とは何でしょうか。
> ファイルを取得する方法
ファイルの「内容」を取得する方法,と読み替えますが,
・System.IO.File.ReadAllBytes
https://msdn.microsoft.com/ja-jp/library/system.io.file.readallbytes(v=vs.100).aspx
などを使えば,ファイルの内容を簡単に取得することが出来ます。
> EXCELファイルをバイナリデータに変換して
で言う「バイナリデータ」とは何でしょうか。
> ファイルを取得する方法
ファイルの「内容」を取得する方法,と読み替えますが,
・System.IO.File.ReadAllBytes
https://msdn.microsoft.com/ja-jp/library/system.io.file.readallbytes(v=vs.100).aspx
などを使えば,ファイルの内容を簡単に取得することが出来ます。
投稿者 kiku  (社会人)
投稿日時
2017/6/9 13:52:42
>作成にあたり、ファイルを取得する方法と取得したファイルをバイナリデータに
>変換する方法をご教授していただきたいです。
取得したファイルをバイナリデータに変換する方法については
下記が参考になると思います。
https://dobon.net/vb/dotnet/file/filestream.html
ファイルを取得する方法については、
どこにあるファイルを取得するのでしょうか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2017/6/9 14:12:50
SQL Server 2016 であれば、FILESTREAM ディレクトリを割り当てて、
FILETABLE として管理してみるのは如何でしょう。
https://codezine.jp/article/detail/6602
https://msdn.microsoft.com/ja-jp/library/ff929144.aspx
https://msdn.microsoft.com/ja-jp/library/gg509088.aspx
FILETABLE として管理せず、VARBIANRY 型のフィールドに保持したいのであれば、こういう方法もあります。DB サーバー上のファイルで、かつ、BULK 処理が可能な権限も必要ですが。
SQL Server 側からアクセスできないようなデータの場合には:
(案1) 16進バイナリリテラルを用いて渡すようにする。
(案2) VB 側で、System.IO.File.ReadAllBytes で Byte 配列に受け取った後で、
ADO.NET でパラメータクエリにして INSERT する。
http://you-the-r.blogspot.jp/2011/03/db-sqlserver-vbnet.html
FILETABLE として管理してみるのは如何でしょう。
https://codezine.jp/article/detail/6602
https://msdn.microsoft.com/ja-jp/library/ff929144.aspx
https://msdn.microsoft.com/ja-jp/library/gg509088.aspx
CREATE TABLE YourTable AS FILETABLE
WITH
(
FILETABLE_DIRECTORY = 'YourTable',
FILETABLE_COLLATE_FILENAME = database_default
)
FILETABLE として管理せず、VARBIANRY 型のフィールドに保持したいのであれば、こういう方法もあります。DB サーバー上のファイルで、かつ、BULK 処理が可能な権限も必要ですが。
INSERT INTO YourTable ( id, fileName, fileContents)
SELECT
100 AS id,
N'C:\ExcelFiles\sample.xlsx' as fileName,
yourFile.BulkColumn as fileContents
FROM
OPENROWSET(BULK N'C:\ExcelFiles\sample.xlsx', SINGLE_BLOB) yourFile
SQL Server 側からアクセスできないようなデータの場合には:
(案1) 16進バイナリリテラルを用いて渡すようにする。
INSERT INTO YourTable ( id, fileName, fileContents)
VALUES ( 200, N'C:\Samples\demo.bin', 0x549B4C756E30EE4E6297015FEB58 )
(案2) VB 側で、System.IO.File.ReadAllBytes で Byte 配列に受け取った後で、
ADO.NET でパラメータクエリにして INSERT する。
http://you-the-r.blogspot.jp/2011/03/db-sqlserver-vbnet.html
お世話になります。
今回、EXCELファイルをバイナリデータに変換してDBに登録する
処理を作成しています。
作成にあたり、ファイルを取得する方法と取得したファイルをバイナリデータに
変換する方法をご教授していただきたいです。
かなり不足の多いところもあると思いますがお願いします。