我正在使用带有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:all
和rake db:migrate
命令,可以看到模式文件。此外,psql控制台中的\l
命令显示我的数据库。
也许只是运行
会更容易c = Hotel.connection.raw_connection
c.exec(%q{\copy hotels (hotel_id, name) FROM 'db/ActivePropertyList.txt' DELIMITER '|'})
,但我建议没有任何事情因为缺少关系而发生。
答案 0 :(得分:0)
我的导入失败是因为PostgreSQL常见的大写问题。将所有标题字段和数据库列名重命名为小写就可以了。