CDN - Eksport zdjęć z SQL do plików jpg DaneBinarne.DAB_Dane

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

*****_***
Posty: 33
Rejestracja: 15 mar 2024, 13:17
Rola: Administrator CDN XL
Wersja: 2022

CDN - Eksport zdjęć z SQL do plików jpg DaneBinarne.DAB_Dane

Post autor: *****_*** »

Dzień dobry. Mam zadanie wyeksportować do plików zdjęcia jpg towarów z tabeli [CDN].[DaneBinarne]. Proszę o pomoc.

damkon
Posty: 22
Rejestracja: 08 cze 2022, 11:32
Rola: Użytkownik CDN XL
Wersja: 2019

Re: CDN - Eksport zdjęć z SQL do plików jpg DaneBinarne.DAB_Dane

Post autor: damkon »

Tutaj jest o konwertowaniu na JPG danych binarnych w C#. Może pomoże Ci.
https://stackoverflow.com/questions/879 ... in-c-sharp
https://www.codeproject.com/Articles/10 ... erver-usin

Awatar użytkownika
praiser
Posty: 1091
Rejestracja: 02 lip 2014, 12:22
Rola: Handlowiec CDN XL
Wersja: 2023

Re: CDN - Eksport zdjęć z SQL do plików jpg DaneBinarne.DAB_Dane

Post autor: praiser »

Wystarczy poweshell (odpalony jako administrator). Znalezione w C# na stacku i lekko przerobione.

#do uzupełnienia

$SERVER = ""
$DATABASE = ""
$USER = ""
$PASSWORD = ""


$connectionString = "Data Source=$SERVER;Initial Catalog=$DATABASE;pwd=$PASSWORD;User ID=$USER;"
$sqlCommandText = "select top(3) DAB_id,DAB_Dane,DAB_Rozszerzenie from CDN.DaneBinarne where DAB_Rozszerzenie='jpg'"
# powyższe zapytanie testowo pobiera 3 pierwsze rekordy z rozszeżeniem jpg
$saveToDir = "C:\" # katalog docelowy
$connection = new-object System.Data.SqlClient.SQLConnection($connectionString)
$command = new-object System.Data.sqlclient.sqlcommand($sqlCommandText,$connection)
$connection.Open()
$bufferSize = 8192 #default value
$buffer = [array]::CreateInstance('Byte', $bufferSize)
$dr = $command.ExecuteReader()
While ($dr.Read())
{
#nazywanie plików: można oczywiście pobrać w zapytaniu nazwy, ja użyłem identyfikatora DAB_Id (zerowy element tablicy)
$fs = New-Object System.IO.FileStream($saveToDir + $dr.GetValue(0) + "." + $dr.GetValue(2)), Create, Write
$bw = New-Object System.IO.BinaryWriter $fs
$start = 0
$received = $dr.GetBytes(1, $start, $buffer, 0, $bufferSize - 1)
While ($received -gt 0)
{
$bw.Write($buffer, 0, $received)
$bw.Flush()
$start += $received
# Read next byte stream
$received = $dr.GetBytes(1, $start, $buffer, 0, $bufferSize - 1)
}
$bw.Close()
$fs.Close()
}
$fs.Dispose()
$dr.Close()
$command.Dispose()
$connection.Close()
--------------------------------
Pozdrawiam
WW

ODPOWIEDZ