postgres-copy icon indicating copy to clipboard operation
postgres-copy copied to clipboard

Enhance usage example? Temp tables

Open nfedyashev opened this issue 4 years ago • 1 comments

I'm using postgres-copy for importing CSV files in tempory tables that are later used for parsing line by line(record by record).

That's why such ActiveRecord models & tables could not be created upfront. I believe that might be not such a rare use case.

That's the workaround that I'm currently using:

    table_name = "upload_#{SecureRandom.hex}"
    ActiveRecord::Base.connection.create_table table_name, id: :integer do |t|
      columns.each do |column_name|
        t.string column_name.to_sym
      end
    end

    klass = Class.new(ActiveRecord::Base) do
      acts_as_copy_target
      self.table_name = table_name
    end
    klass.copy_from file_path.to_s, columns: columns

Please let me know if you may need this as an example in README, so I'll prepare a PR. HTH

nfedyashev avatar Feb 08 '20 04:02 nfedyashev

Actually this brings to my attention a problem with the interface defined by this gem, a simpler class that takes a database connection and the copy parameters would be a more solid base to build the ActiveRecord behaviour upon.

The PR withe example in the README is a good idea. But I'm also keeping this open to improve on the interface exposed by the gem.

diogob avatar Feb 08 '20 23:02 diogob