質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

964閲覧

時刻型フィールドのインポートについて

hatsuzo

総合スコア56

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/07/04 07:36

いつもお世話になっております。

下記のようなMysqlのデータをPostgreSQLに移行しようと思っています。

SQL

1CREATE TABLE meisai ( 2 sycd char(5), 3 npdate char(8), 4 gyono int, 5 vssttime time, 6 vsedtime time, 7 vsmemo varchar(500), 8 PRIMARY KEY (sycd,npdate,gyono) 9);

Mysql側で下記のようにエクスポートし、

SQL

1select * from meisai 2into outfile 'f:/temp/meisai.csv' 3fields terminated by ',' 4optionally enclosed by '"' 5lines terminated by '\r\n';

PostgreSQLで下記のようにインポートしました。

SQL

1copy meisai from 'f:/temp/meisai.csv' with CSV;

しかし、インポート時に、time型の列でエラーが出たので調べてみると、
Mysqlでエクスポートした時に、"15:22:00" の形で吐き出されてしまうことが原因のようです。

ダブルクォーテーションを外した状態、15:22:00 にエディタで修正すると、エラーが出なくなります。

Excelで取り込んで加工すれば""を外すことは出来なくもないと思うのですが、何度も行うことになると間違いも発生するため、SQLで何とかならないが調べてみたのですが、select時に、TIME_FORMAT(vstime,'%H:%i:%s') などとしても、""で囲まれて同じことになります。

何か対処策はあるのでしょうか?
識者の方のアドバイス頂けたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Postgresでのデータ値の引用符付はデフォルトが2重引用符(")なので、"が付いていても問題は無いはずです。

どのようなエラーでしょうか?
15:22:00のような形式であれば、はPostgresでtime without time zoneで受ければエラーは出ません

投稿2019/07/04 08:32

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatsuzo

2019/07/04 09:36

sazi様 コメントありがとうございました。 お恥ずかしい限りですが、エラーの内容をよく見てみると、 date/time field value out of range "25:30:00" でした。 mysqlではこうした値も受け付けてくれていたのですが、当たり前とはいえ、PostgreSQLのほうが厳しいですね。 深夜にわたる時間を入れる必要があったので、From Toの前後関係が判るようにこうした値でデータを持つようにしていました。 これはChar型で持たせるしか仕方ないですね。 お手を煩わせてすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問