2017-12-20 35 views
0

10進値1.449043781を含む列を含む新しいテーブルを作成するためにcsvファイルをロードしています。数値タイプの入力構文エラーが無効です:V1

ここに私のコードは

CREATE TABLE table (
    v1 float 
); 

だPostgresは値がfloatであっても数値型ため無効な入力構文エラーを言って、エラーを出してくれる。データ型宣言を小数点以下(15,13)に変更しようとしましたが、無駄です。私はここで何が欠けていますか?

ありがとうございます。

+1

テーブルをロードするのにcopyコマンドを使用していますか?ファイルにヘッダー行がありますか? PostgreSQLから正確なメッセージを提供できますか?各行の番号の前にファイル内に他のフィールドがありますか?この値は挿入された浮動小数点数になりますので、そこに問題はありません(6桁の精度を保持するには、データ型を倍精度にする必要があります)。 –

+1

エラーメッセージは、文字列「 'v1」を数字として解釈しようとしていることを意味します。 CSV自体に列名 'v1'が表示されていることは、ファイルにヘッダー行があることを示しています。また、' COPY IN'がこの行をデータとして解釈しようとしているということは、 'HEADER'オプション。 –

答えて

0

を再現することはできません - 9.6上のエラーなしコピーを:

t=# CREATE TABLE t (
    v1 float 
); 
CREATE TABLE 
t=# copy t from stdin; 
Enter data to be copied followed by a newline. 
End with a backslash and a period on a line by itself. 
>> 1.449043781 
>> \. 
COPY 1 
t=# select v1,pg_typeof(v1) from t; 
    v1  | pg_typeof 
-------------+------------------ 
1.449043781 | double precision 
(1 row) 

もあなたのエラーから、それはあなたが数値で表を作成したに見え、浮いていません。 And they are not the same(両方とも1.449043781を受け入れます)

関連する問題