sql >> データベース >  >> RDS >> PostgreSQL

SQLでフルテキストファイルをエクスポートする方法は?

    コピー このために設計されていません。これはテーブル構造のデータを処理することを目的としているため、行と列を分割する何らかの方法がないと機能しません。 COPY FROMの文字は常にいくつかあります 区切り文字として解釈され、 COPY TO データ内でエスケープシーケンスが見つかった場合は、エスケープシーケンスを挿入します。一般的なファイルI/O機能を探している場合、これは適切ではありません。

    実際、データベースサーバーは一般的なファイルI/O用に設計されていません。一つには、何でも サーバーのファイルシステムと直接対話する場合は、スーパーユーザーの役割が必要になります。可能であれば、通常どおりテーブルにクエリを実行し、クライアント側でファイルI/Oを処理する必要があります。

    とはいえ、いくつかの選択肢があります:

    • 組み込みの pg_read_file() 関数、および pg_file_write() adminpackから モジュールは、ファイルシステムへの最も直接的なインターフェイスを提供しますが、どちらもクラスターのデータディレクトリに制限されています(ユーザーが作成したランダムなファイルをそこに保存することはお勧めしません)。
    • lo_import() およびlo_export() 私が知っている唯一の組み込み関数は、ファイルI / Oを直接処理し、サーバーのファイルシステムへの無制限のアクセスを持っています(ホストOSによって課せられた制約の範囲内で)が、ラージオブジェクトインターフェイスは特にユーザーフレンドリーではありません....
    • Perlのような手続き型言語の信頼できないバリアントをインストールする場合( plperlu )またはPython( plpythonu )、その言語のネイティブI/Oルーチンのラッパー関数を記述できます。
    • COPY TO PROGRAMでは達成できないことはあまりありません 十分に決心している場合は、 COPY(SELECT 1)TO PROGRAM'mv ' pg_file_write()の制限を回避する -ただし、これによりSQLと外部ツールの境界が多少あいまいになります(コードベースを継承する人は誰も感心しないでしょう...)。


    1. これはMicrosoftの問題ですか、それともOracleの問題ですか?

    2. Javaマルチキャストの存続時間は常に0です

    3. MySQLで行のない日でも1日あたりの行数をグループ化するにはどうすればよいですか?

    4. Mysql:エラー1005(HY000):テーブル'receitascakephp.recipes'を作成できません(errno:150)