【发布时间】:2014-06-29 03:34:13
【问题描述】:
我正在尝试将数据从 CSV 导入 PSQL 数据库。我找到了一个很好的例子,说明如何在堆栈溢出时从 csv 复制数据,如下所示(只有文件路径不同)。
\COPY manjadata FROM '/filepath/data.csv' DELIMITER ',' CSV;
但是,这在第一行中断,给我错误消息:
ERROR: invalid input syntax for integer: "address"
CONTEXT: COPY data, line 1, column id: "address"
我的表设置如下:
class Data < ActiveRecord::Migration
def change
create_table :data do |t|
t.string :address
t.string :city
t.string :state
t.integer :zip
t.string :name
t.timestamps
end
end
end
CSV 如下所示:
address,city,state,zip,name,url
211 Hanover St,Boston,MA,2113,Mother Anna's,http://motheranna.com/
226 Hanover St,Boston,MA,2113,Lucca,http://www.luccaboston.com/
227 Hanover St,Boston,MA,2113,Cobblestone,http://www.CobblestoneNe.com
如何将此 csv 导入 psql 数据库而不破坏它?我查找了很多文档和错误消息,但还没有找到解决我的问题的方法。
谢谢!
【问题讨论】:
-
当你这样给
COPY manjadata FROM '/filepath/data.csv' WITH (FORMAT csv, DELIMITER ',');时会发生什么? -
如果我在复制之前没有反斜杠
\COPY,我会收到错误消息“无法打开文件“...文件路径...”进行阅读:权限被拒绝. If I add the\COPY` 我收到错误消息ERROR: invalid input syntax for integer: "address" CONTEXT: COPY data, line 1, column id: "address" -
你在哪里找到那个语法?我在 SO 中看到了很多,在 COPY 之前都没有反斜杠。
-
而且你必须在命令中用
HEADERS true指定标题。 -
@Pavan 即使我删除了标题,它也会中断。查找错误消息时发现的反斜杠
could not open file "...filepath..." for reading: Permission denied
标签: ruby-on-rails postgresql csv