Ruby cloud9上psql查询的文件路径

Ruby cloud9上psql查询的文件路径,ruby,psql,cloud9,Ruby,Psql,Cloud9,我的cloud9工作区在名为“onetwo”的文件夹中有一个.csv文件和一个Ruby脚本 以下是Ruby脚本: require 'pg' def create_db conn = PG.connect(dbname: 'postgres') conn.exec("CREATE DATABASE onetwo") conn = PG.connect(dbname: 'onetwo') conn.exec("CREATE TABLE orgs ( id INT, descript

我的cloud9工作区在名为“onetwo”的文件夹中有一个.csv文件和一个Ruby脚本

以下是Ruby脚本:

require 'pg'

def create_db
  conn = PG.connect(dbname: 'postgres')
  conn.exec("CREATE DATABASE onetwo")
  conn = PG.connect(dbname: 'onetwo')
  conn.exec("CREATE TABLE orgs ( id INT, description VARCHAR, PRIMARY KEY (id) )")
  conn.exec("COPY orgs(id, description) FROM 'workspace/onetwo/jr_data_engineer_assignment.csv' DELIMITER ',' CSV HEADER")
end
在最后一行(创建数据库和表)之前,一切正常。以下是我得到的信息:

ERROR:  could not open file "workspace/onetwo/jr_data_engineer_assignment.csv" for reading: No such file or directory (PG::UndefinedFile)

如果尝试将文件路径指定为“jr_data_engineer_assignment.csv”或“/jr_data_engineer_assignment.csv”或“/jr_data_engineer_assignment.csv”,则会出现相同的错误。写入文件路径的正确方法是什么??谢谢。

要继续@archon92所述内容,您可以使用
File.expand\u path(\uuu dir\uuu)
获取脚本运行目录的绝对路径。如果csv文件与脚本相关,则可以执行以下操作:

require 'pg'

csv_file_path = File.expand_path('jr_data_engineer_assignment.csv')

def create_db
  conn = PG.connect(dbname: 'postgres')
  conn.exec("CREATE DATABASE onetwo")
  conn = PG.connect(dbname: 'onetwo')
  conn.exec("CREATE TABLE orgs ( id INT, description VARCHAR, PRIMARY KEY (id) )")
  conn.exec("COPY orgs(id, description) FROM '#{csv_file_path}' DELIMITER ',' CSV HEADER")
end

当您从根目录(绝对路径)或当前工作指令的上下文(相对路径)指定文件时,文件路径通常有效。您的路径“workspace/onetwo/jr_data\u engineer\u assignment.csv”似乎不是来自这两个目录。请尝试从根目录指定文件路径,至少这会帮助您现在继续前进,即使不建议您对生产路径进行硬编码!