| 18 | module Helper |
| 19 | module Writable |
| 20 | def write_table(table, output, type: :file) |
| 21 | if output.is_a?(Arrow::Buffer) |
| 22 | output_stream = Arrow::BufferOutputStream.new(output) |
| 23 | else |
| 24 | output_stream = Arrow::FileOutputStream.new(output, false) |
| 25 | end |
| 26 | begin |
| 27 | if type == :file |
| 28 | writer_class = Arrow::RecordBatchFileWriter |
| 29 | else |
| 30 | writer_class = Arrow::RecordBatchStreamWriter |
| 31 | end |
| 32 | writer = writer_class.new(output_stream, table.schema) |
| 33 | begin |
| 34 | writer.write_table(table) |
| 35 | ensure |
| 36 | writer.close |
| 37 | end |
| 38 | ensure |
| 39 | output_stream.close |
| 40 | end |
| 41 | end |
| 42 | end |
| 43 | end |