将数据从文本文件导入PostgreSQL。 “Postgres_Copy”宝石

时间:2013-03-08 01:52:02

标签: ruby-on-rails ruby-on-rails-3 postgresql import rails-postgresql

我正在使用带有ruby和rails app的PostgreSQL并安装了Postgres_copy gem https://github.com/diogob/postgres-copy

我有酒店表,想要使用函数pg_copy_from导入文本文件。文件中的数据由“|”分隔符号

所以我创建了rake任务

namespace :db do
  namespace :import do
    desc "Copy hotels records to the database"
    task :hotels => :environment do
      Hotel.pg_copy_from 'db/ActivePropertyList.txt', :delimiter => '|', :map => {
        'HotelID' => 'ean_hotel_id',
        'SequenceNumber' => 'sequence_number',
        'Name' => 'name',
        'Address' => 'address'}
    end
  end
end

如果我跑rake db:import:hotels没有任何反应。可能是什么问题?

更新

我注意到当我运行psql并尝试通过\d命令查看所有实现时,它会显示“找不到关系。”

但是,我运行了rake:db:create:allrake db:migrate命令,可以看到模式文件。此外,psql控制台中的\l命令显示我的数据库。

也许只是运行

会更容易
c = Hotel.connection.raw_connection
c.exec(%q{\copy hotels (hotel_id, name) FROM 'db/ActivePropertyList.txt' DELIMITER '|'})

,但我建议没有任何事情因为缺少关系而发生。

1 个答案:

答案 0 :(得分:0)

我的导入失败是因为PostgreSQL常见的大写问题。将所有标题字段和数据库列名重命名为小写就可以了。