2

このpsqlの\copyコマンドに対して、「そのようなファイルまたはディレクトリはありません」というエラーメッセージが表示され続けます。

\copy household from '/home/kihong/hh.csv' with csv header;

何か提案はありますか?

4

1 に答える 1

2

私があなたなら、ファイルを別のフォルダーに移動します(これは私にとってはうまくいきました)。デスクトップからCSVファイルをアップロードしようとしましたが、エラーメッセージが表示されました。また、Craig Ringerが提案したように、\copyの代わりにcopyを使用してください。

スプレッドシート(​​ExcelまたはOpenOffice Calc)からpostgreSQLにデータをロードする方法のステップバイステップの説明は次のとおりです。

スプレッドシートページをCSVファイルとして保存します。推奨される方法は、OpenOfficeCalcでスプレッドシートを開いて保存することです。「テキストファイルにエクスポート」ウィンドウで、Unicodeとしての文字セット(UTF8)、フィールド区切り文字:「、」、およびテキスト区切り文字「」を選択します。アクティブなシートのみが保存されたことを示すメッセージが表示されます。注:このファイルは、デスクトップではなくフォルダーに保存する必要があり、UTF8形式で保存する必要があります(dafaultによるpostgreSQLはUTF8エンコード用にステップアップされています)。デスクトップに保存した場合、postgreSQLは「アクセスが拒否されました」というメッセージを表示し、アップロードしません。

PostgreSQLで、スプレッドシートと同じ列数の空のテーブルを作成します。

注:各列で、column-nameは同じである必要があり、データ型は同じである必要があります。また、十分なフィールドで文字が変化するデータの長さにも注意してください。

次に、postgreSQLのSQLウィンドウに、次のコードを配置します。

E'C:\\ tmp \\ blabla.csv'区切り文字'、'CSVHEADERから"ABC"。"def"をコピーします。

注:ここで、C:\\ tmpは、CSVファイル「blabla」が保存されるフォルダーです。「ABC」。「def」はpostgreSQLで作成されたテーブルで、「ABC」はスキーマ、「def」はテーブルです。次に、上部の緑色のボタンを押して「クエリの実行」を実行します。「CSVHEADER」は、CSVテーブルのすべての列の先頭に見出しがある場合に必要です。

everythigに問題がない場合、エラーメッセージは表示されず、CSVファイルのテーブルデータがpostgreSQLテーブルにロードされます。ただし、エラーメッセージが表示された場合は、次のようにします。

データが特定の列に対して長すぎるというエラーメッセージが表示されている場合は、列のサイズを大きくしてください。これは主に文字と文字が変化する列で発生します。次に、「クエリの実行」コマンドを再度実行します。

データ型が特定の列と一致しないというエラーメッセージが表示されている場合は、postgreSQLテーブル列のデータ型をCSVテーブルのデータ型と一致するように変更します。

于 2012-10-04T06:37:12.580 に答える