あなたがあなたの質問で説明することは明らかに実際に起こっていることではありません。 コピーコード> 冗長な一重引用符を含む文字列リテラルを
date
にインポートしようとすると失敗します 列。
冗長な引用符を取り除くには、一時テーブル> text
列、次に INSERT INTO
引用符をトリミングするターゲットテーブル:
CREATE TEMP TABLE wtmp (
city text
, temp_lo int
, temp_hi int
, prcp real
, date text -- note how I use text here.
);
COPY wtmp FROM '~aviad/postsgres/playground/weather.txt';
INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
SELECT city, temp_lo, temp_hi, prcp, trim(date, '''')::date
FROM wtmp
-- ORDER BY ?
;
一時テーブルは、セッションの終了時に自動的に削除されます。
識別子として予約語
マニュアルから例をコピーしたようです。これが
正しいですが、マニュアルのその例は残念です。 のような予約語は使用しないことをお勧めします日付
列名として。ご覧のとおり、こちら
日付コード> すべてのSQL標準で予約語です。 Postgresでの使用が許可されており、簡単な例でどのように魅力的であるかがわかります。しかし、それは良い考えにはなりません。一般的に、あなたは回避する習慣を身につける必要があります 識別子としての予約語。紛らわしいエラーメッセージや不必要に互換性のないSQLコードにつながります。