diogob / postgres-copy

Simple PostgreSQL's COPY command support in ActiveRecord models

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Enhance usage example? Temp tables

nfedyashev opened this issue · 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

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.