2016-11-19 6 views
0

私は、行と引用符を保持するように設計されたフォームを持つExpressアプリケーションを開発しています。Postgresデータベースに一重引用符が格納されています

一部の行には一重引用符(')が付いていますが、全体的に情報を保存することができ、問題なくバックアップできます。今、私がpg_dumpをやりたいときに、データベースをSQLファイルに入れると、引用符はテキストエディタでちょっとしたことがあるように見えます。

すべての一重引用符を二重に変更する方法を作成する必要がありますか、それをそのままにして、重大な問題を引き起こすことなくデータベースにアップロードすることはできますか。私は人々が一重引用符または二重引用符を含む行に入力し続けることを知っているので、私は大きな解決策や答えを知りたいと思います。

答えて

2

文字データ型の一重引用符は、でも全く問題ありません。です。文字列リテラルで正しくエスケープする必要があります。

INSERTでデータを書き込むには、SQL構文規則に従ってすべての文字列リテラルを引用する必要があります。 pg_dumpが自動的にエスケープの世話をするあなたのためにそれを行うためのツール...

しかしがあります。デフォルトモードでは、COPY(はるかに速くINSERTより速い)で再インポートするテキスト出力が生成され、一重引用符には特別な意味はありません。そして、(デフォルトではない)csvモードでは、デフォルトの引用符は二重引用符(")で構成可能です。 The manual:

QUOTE

データ値が引用されているときに使用する引用文字を指定します。デフォルトは二重引用符です。これは単一の1バイト文字でなければなりません。このオプションは、CSV形式を使用する場合にのみ許可されます。

フォーマットは、COPYのルールで定義されており、SQL構文ルールでは定義されていません。

関連する問題