0

我把PostgreSQL Ruby和Rails应用程序,并有Postgres_copy宝石安装 https://github.com/diogob/postgres-copy将数据从文本文件导入PostgreSQL。 “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没有任何反应。可能是什么问题呢?

UPDATE

我注意到,当我运行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 '|'}) 

,但我建议什么都不会发生,因为丢失的关系。

回答

0

我的导入失败是因为PostgreSQL常见的大写问题。将所有头字段和数据库列名重命名为小写都行。