-2

我想使用路径将数据从CSV文件插入到。PostgreSQL tables文件名是filename.csv;表的名称是filename。如何删除路径的其他部分以及.csv扩展名?

我使用以下代码,但它不起作用:

for i in 'ls ~/catalog/subcatalog/*.csv' ; do
  FILE = 'sed 's%~/catalog/subcatalog/%%g' $i'
  PGPASSWORD=$2 psql -q -U $1 -d testing -c "copy 'sed 's%.csv%%g' $FILE from $i delimiter ',' CSV'";
done
4

3 回答 3

1
于 2013-03-20T16:32:04.083 回答
0

您的代码不起作用,因为sed对文件或流进行操作,而不是对变量进行操作。但是你不需要sed这个:

FILE=${i%.csv}
FILE=${FILE##*/}

这应该从 中删除.csv扩展名$i并将结果存储在 中$FILE,然后删除目录部分。您可以通过直接在终端中尝试上述方法来验证结果。

见:http ://tldp.org/LDP/abs/html/string-manipulation.html

于 2013-03-20T12:50:17.363 回答
0

您可以通过这种方式使用 basename:

...
FILE=`basename $i .csv`
...
于 2013-03-20T13:10:16.793 回答