• ベストアンサー

PostgreSQLのnull値について

PostgreSQL7.2.3 で利用しています。 insert文を発行するときは null値は values(null); と実行します。 これは問題ないのですが COPY toコマンドを発行し、(カンマ区切り)csvに落とすと \N で落ちてきます。何か設定が悪いのでしょうか? 同じく、カンマ区切りのファイル 123,,,,5,66 とかを COPY fromコマンドでの受入を実行することもできません。 123,\N,\N,\N,5,66 だったら成功するようです。 こういうものなのでしょうか?

  • ssm3u
  • お礼率70% (42/60)

質問者が選んだベストアンサー

  • ベストアンサー
  • k_yuki
  • ベストアンサー率41% (23/55)
回答No.1

default設定では、\Nです。 パラメータで\Nを変更することができますので、 copyコマンドについては以下のURLを参照してください。 http://www.postgresql.jp/document/pg721doc/reference/sql-copy.html ご参考まで。

参考URL:
http://www.postgresql.jp/document/pg721doc/reference/sql-copy.html
ssm3u
質問者

お礼

COPY table_nama FROM file_name USING DELIMITERS ',' WITH NULL AS ''; で無事コピーすることができました。 ありがとうございました。

関連するQ&A

  • php経由でpostgresqlにdate型カラムにNULLを入れるには

    psqlのコマンドからは INSERT INTO table VALUES (NULL); でdate型のカラムにNULLを入れられるようですが、 PHPで以下のようにしてもその下にあるエラーが出ます。 if(empty($date)){ $date = 'NULL'; エラーを回避してdate型カラムにNULLをいれる方法を 捜しています。 Warning: PostgreSQL query failed: ERROR: Bad date external representation 'NULL' PHP4.1 POSTGRES7.0 の環境です。

    • 締切済み
    • PHP
  • 日付型項目のNULLについて(PostgreSQL)

    よろしくお願いします。 下記内容のtest_tableを作成して ---- CREATE TABLE "test_table" ( "id" varchar(10) NOT NULL, "fdate" date ); ---- 下記内容のデータを登録しました。 ---- insert into test_table(id,fdate) values ('abc',NULL); ---- 下記のsqlでデータを取得できませんでした。 どうしてでしょうか? select * from test_table where fdate = NULL;

  • date型に空白を入れるとエラーになる

    現在、CSVファイルからCOPYコマンドを使用し、 データのINSERTを行いたいと思っております。 で試したところ、 COPY test from '/var/lib/pgsql/csv/insert.csv' USING DELIMITERS ','; とコマンドを入力した結果 ERROR: invalid input syntax for type date: "" CONTEXT: COPY test, line 1, column purchase: "" となってしまいます。 これを回避するためには、どうすればよいでしょう。 postgresqlは初心者なので、申し訳ございませんが 教えてください。よろしくお願いいたします。

  • PostgreSQLでcsvにエクスポート

    PostgreSQL内のテーブルをCOPYコマンドを使ってCSVにエクポートしようと思っています。 データのエクスポートは出来るのですが、二重引用符の付加が出来ません。 copy TBL1 to 'd:/TBL1.CSV' with delimiter ',' csv quote '"' 《CSVデータの内容》 001,あいうえお "001","あいうえお" ← この様に二重引用符を付加したいです。 どうすればいいでしょうか? ご教授いただきたく思っております。 よろしくお願いします。

  • POSTGRESQLデフォルトのシーケンス値を強制

    以下の(2)(3)のaをデフォルトであるシーケンスの値を強制入力しエラーを回避する方法はありますか? create sequence testseq start 1; create table test(a int not null default nextval('testseq'), b int); --(1)成功 insert into test (b) values(0); --(2)エラー insert into test (a,b) values(null,0); --(3)エラー insert into test values(null,0);

  • csvデータをPostgreSQLにインポート

    RedHat8.0にpostgresql-7.2.3.tar.gzをインストールしています。database_6に接続し、 database_6=# COPY tablename FROM '/var/test/testdata.csv' WITH CSV; を実行すると(tablenameとtestdataとは同一名にしてあります)、 ERROR: parser: parse error at or near "csv" と表示されてしまいます。どこが悪いのでしょうか?

  • PostgreSQLログイン中にOSコマンド

    Oracleだと、SQLplusログイン中に、!をコマンドの前につければ、OSコマンドが使えます。 PostgreSQLで、ログイン中には同じような方法はありますか? copyコマンドで、CSVファイルに出力されたか確認する場合、lsコマンドでファイルの存在を確認したいのですが。 PostgreSQL初心者です。 ご存知の方いらっしゃいました、宜しくお願いします。

  • COPY時のtimestamp型について

    どなたかご存知の方、ご教示下さい! CSVファイルよりCOPYコマンドでテーブルにレコードをインポートしようとしているのですが、 その際、timestamp型についてNULLだった場合には\Nを記述する様にしました。 ところが下記の様なテーブルの場合に、COPYが上手くいきません。 <テーブル TEST> AAA varchar(10) BBB timestamp CCC varchar(10) DDD timestamp <CSVファイル TEST.csv> てすと,\N,てすと,\N <実行したコマンド> COPY TEST from 'TEST.csv' using delimiters ','; <psqlのエラーメッセージ> ERROR: copy: line 1, Bad timestamp external representation '\N カラムBBBは問題ないのですが、 カラムDDD(最後尾のカラム)がNULLの場合にエラーになってしまいます。 何か特別な記述が必要なのでしょうか??? 情報お持ちの方いらっしゃいましたらどうぞよろしくお願い致します。

  • MySQL Date型にNULLが設定できない。

    csvファイルからMySQLにデータを取り込む際に、Date型やint型にNULLを設定するにはどうしたらよいでしょうか。 以下のようなテーブルに | tTest | CREATE TABLE `ttest` ( `ID` bigint(20) NOT NULL, `title` text NOT NULL, `naiyou` varchar(100) DEFAULT NULL, `kaishi` date DEFAULT NULL, `owari` date DEFAULT NULL, `peirod` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=sjis | 以下のようなcsvファイルを読み込んだとき(*)、 10,テスト,2008-04-05,2009-04-23,43 11,テスト,2008-04-05,NULL,43 12,テスト,2008-04-05,2009-04-23,NULL 2行目のNULLで ERROR 1292 (22007): Incorrect date value: 'NULL' for column .... とエラーが発生します。 3行目のNULLでもint型ですが同様にエラーとなります。 一方、insertで行の追加以下のようにした場合は成功します。 insert into tTest values (12,テスト,'2008-04-05',NULL,NULL) 外部ファイルから読み込んだ場合にNULL値を設定するにはどのようにしたらよいのでしょうか。 (*)以下のコマンド LOAD DATA INFILE "E:\\work\\MySQL\\sample.csv" INTO TABLE tTest FIELDS TERMINATED BY "," LINES TERMINATED BY "\r\n";

    • ベストアンサー
    • MySQL
  • PostgreSQL MySQL CSV入出力

    テーブルのデータを移植したいと思っています PostgreSQL8.4から出力したCSVをMySQL5.5で取り込みたいのですが、COPYコマンドを使用すると以下のようなエラーが出ます ERROR 1262 (01000): Row 1 was truncated; it contained more data than there were input columns PostgreSQLはtext[]型で"{A_1,A_2}"といったデータを出力します MySQLはPostgreSQLの配列に相当する型がないようなのでBlob型で格納しようと思っています おそらくデータ内のカンマが原因なのはわかっているのですが、上手くエクスポート・インポートする方法はありませんでしょうか?

    • ベストアンサー
    • MySQL