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

postgresデータベースにJDBCを使用してcsvファイルを読み取ろうとして許可が拒否されました

    スーパーユーザーとしてステートメントを実行しましたか psqlで、JDBCを介して別のユーザーとして?
    マニュアル教えてくれます

    できます SECURITY DEFINER スーパーユーザーが所有します。 セキュリティリスク> 。 REVOKE を使用することもできます。 すべての権利は一般に公開されており、付与 のみです。 選択したユーザーに。次のようになります:

    CREATE OR REPLACE FUNCTION foo()
      RETURNS void AS
    $BODY$
        COPY data_1
        FROM E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
        USING delimiters ',';
    $BODY$
      LANGUAGE sql VOLATILE SECURITY DEFINER
      SET search_path = public, pg_temp;  -- or whatever schema the table is in
    
    REVOKE ALL ON FUNCTION foo() FROM public;
    GRANT SELECT ON FUNCTION foo() TO my_user;
    

    また、にも注意してください。エスケープ文字列の適切な構文 は:

    E'C:\\Users\\Abhishek\\Desktop\\data1.csv'
    

    E'...'に注意してください 。
    バージョン9.1以降、設定standard_conforming_strings デフォルトでオンになっており、これを強制します。




    1. SQLサーバーでmoneyデータ型から変換するにはどうすればよいですか?

    2. カーソルを使用したOracleプロシージャの動的クエリ

    3. SQLステートメントで構文エラーが発生したのに、なぜこのSQLインジェクションが成功するのですか?

    4. MariaDB DATABASE()の説明