0

私はSQLを使用するのが初めてなので、ご容赦ください。

数百の csv ファイルを PostgreSQL にインポートする必要があります。私の Web 検索では、多くの csv ファイルを 1 つのテーブルにインポートする方法しか示されていません。ただし、ほとんどの csv ファイルには異なる列タイプがあります (すべて 1 行のヘッダーがあります)。どうにかしてループを実行し、各 csv を csv と同じ名前のテーブルにインポートすることは可能ですか? 各テーブルを手動で作成し、列を指定することはオプションではありません。COPYテーブルはすでに指定されている必要があるため、機能しないことはわかっています。

おそらく、これは PostgreSQL では実行できないのでしょうか? 私は pgAdmin III または PSQL コンソールでこれを実現したいと考えていますが、他のアイデアにもオープンです (R のようなものを使用して csv をより簡単に PostgreSQL に入力できる形式に変更しますか?)。

Windows 7 コンピューターで PostgreSQL を使用しています。PostgreSQL を使用するように要求されたため、質問の焦点です。

目的の結果はテーブルでいっぱいのデータベースで、特定のサイト データを含むスプレッドシートと結合します。ありがとう!

4

2 に答える 2

1

pgfutterを使用します。

一般的な構文は次のようになります。

   pgfutter csv       

Windows コマンド プロンプトからディレクトリ内のすべての csv ファイルに対してこれを実行するには、目的のディレクトリに移動し、次のように入力します。

   for %f in (*.csv) do pgfutter csv %f

ダウンロードしたプログラムのパスを、環境変数の受け入れられるパスのリストに追加する必要があることに注意してください。

編集:Linuxユーザー向けのコマンドラインコードは次のとおりです

次のように実行します

   pgfutter *.csv       

または、それがうまくいかない場合

   find -iname '*.csv' -exec pgfutter csv {} \;
于 2015-09-25T00:24:43.520 に答える
1

ターミナルで nano を使用して、ディレクトリの下の csv ファイルを postgres DB に移動することをループするファイルを作成します。

>nano run_pgfutter.sh

run_pgfutter.sh の内容:

#! /bin/bash
for i in /mypath/*.csv
do
   ./pgfutter csv ${i}
done

次に、ファイルを実行可能にします。

chmod u+x run_pgfutter.sh 
于 2017-04-21T21:21:28.327 に答える