-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

次のようにbasenameを使用できます。

...
FILE=`basename $i .csv`
...
于 2013-03-20T13:10:16.793 に答える
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 に答える