Tinytds - Save binary as file

Hello,

I’m learning Ruby and I’m trying to save to disk some content that is in
sql server in a column of type ‘Image’.

Problem is that the column with the content always have the same
size(4096) whem I’m iterating through the results.

My code so far:

client = TinyTds::Client.new(:username => ‘someuser’, :password =>
‘somepass’, :dataserver => ‘someserver’, :database => ‘somedb’)
result = client.execute(“SELECT top 5 Content,DirName,LeafName FROM
sometable where ListID=‘819B’ AND Content is not null”)

result.each do |row|
directory_name = File.join(“d:” , row[“DirName”])
FileUtils.mkdir_p(directory_name) unless File.exists?(directory_name)

filename = File.join(directory_name , row[“LeafName”])

p row[“Content”].length # Always returns 4096…

File.open(filename, “w”) do |myfile|
myfile.write(row[“Content”])
end
end

Subject: Tinytds - Save binary as file
Date: Sat 22 Dec 12 02:42:55AM +0900

Quoting Miguel M. ([email protected]):

File.open(filename, “w”) do |myfile|

If you want to write binary (i.e. unadulterated) content, you must add
a ‘b’, as follows:

File.open(filename, “wb”) do |myfile|

Carlo

On Fri, Dec 21, 2012 at 11:42 AM, Miguel M. [email protected]
wrote:

client = TinyTds::Client.new(:username => ‘someuser’, :password =>
p row[“Content”].length # Always returns 4096…

File.open(filename, “w”) do |myfile|
myfile.write(row[“Content”])
end
end


Posted via http://www.ruby-forum.com/.

Can you show the table schema?

“wb” didn’t work.

Here is the table schema

CREATE TABLE [dbo].[Docs](
[Id] [uniqueidentifier] NOT NULL,
[ListId] [uniqueidentifier] NOT NULL,
[DirName] nvarchar NOT NULL,
[LeafName] nvarchar NOT NULL,
[Content] [image] NULL)

unsubscribe

See here

The default is 4Kb when no size parameter is specified

Also see
https://groups.google.com/forum/#!msg/rails-sqlserver-adapter/uRq9355DP94/wpH1d3TVHFEJ
seems there is a config file that can impact size of data returned