当我使用 `sequel` 从 csv 文件将数据导入 postgresql 时出现错误

I have an error when I import the data into postgresql from csv file with `sequel`

我正在尝试将数据从 csv 文件导入到 postgresql,如下所示。

csv = CSV.open(path, { col_sep: ',', headers: :first_row })

MatchDB.db.copy_into(:property,
  data: csv,
  format: :csv
)

但是我遇到了这样的错误。

TypeError: wrong argument type CSV::Row (expected String)

有人知道我该如何解决吗?

正如您在 Sequel’s tests, the Database#copy_into 方法中看到的那样,需要一个字符串,其中列由逗号分隔,行由行分隔符 \n.

您正在尝试传递一个 ruby 内部 CSV 表示,它是 [一般来说有点] 数组的数组。我不是 ruby CSV 方面的大师,但要从中制作出合适的字符串,可以使用:

csv.map { |row| row.join ',' }.join "\n"

总结:

csv = CSV.open(path, { col_sep: ',', headers: :first_row })

MatchDB.db.copy_into(:property,
  data: csv.map { |row| row.join ',' }.join "\n",
  format: :csv
)