Forum: Ruby Tinytds - Save binary as file

Posted by Miguel Mendes (lycan)
on 2012-12-21 18:42
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
Posted by Carlo E. Prelz (Guest)
on 2012-12-21 19:10
(Received via mailing list)
Subject: Tinytds - Save binary as file
  Date: Sat 22 Dec 12 02:42:55AM +0900

Quoting Miguel Mendes (lists@ruby-forum.com):

>   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
Posted by tamouse mailing lists (Guest)
on 2012-12-22 14:36
(Received via mailing list)
On Fri, Dec 21, 2012 at 11:42 AM, Miguel Mendes <lists@ruby-forum.com> 
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?
Posted by Miguel Mendes (lycan)
on 2012-12-26 11:00
"wb" didn't work.

Here is the table schema

CREATE TABLE [dbo].[Docs](
  [Id] [uniqueidentifier] NOT NULL,
  [ListId] [uniqueidentifier] NOT NULL,
  [DirName] [nvarchar](256) NOT NULL,
  [LeafName] [nvarchar](128) NOT NULL,
  [Content] [image] NULL)
Posted by akshay Indian (akshay3030)
on 2013-02-02 01:36
Attachment: DifferenDiagnosisPhysical-godman.pdf (23,3 MB)
hi
Posted by Chris Hulan (Guest)
on 2013-02-02 04:54
(Received via mailing list)
See here
http://msdn.microsoft.com/en-us/library/ms187365.aspx
The default is 4Kb when no size parameter is specified

Also see
https://groups.google.com/forum/#!msg/rails-sqlser...
seems there is a config file that can impact size of data returned
Posted by Theodore Kariotis (tedwa98075)
on 2013-02-02 05:04
(Received via mailing list)
unsubscribe
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.