お世話になります。
BD初心者なのですが、
Postgressで作成されたダンプファイル(文字コードEUC)からMySQL(MariaDB・UTF-8)へ
データベース構造を変更しようとしています。
いずれもサーバー附属のphpMyAdminなどのソフト経由でダンプして
インポートしようと思っています。
例えばPostgressのテーブル構造が以下の場合
CREATE TABLE table_name (
column_a integer NOT NULL,
column_b integer,
"timestamp" bytea
);
1.MySQLでは、どのように記載すればよいでしょうか?
2.MySQLでは2032年問題があるようですので
datetime型に変更しても問題ないでしょうか?
上記2点や変更移管する際の注意事項等まとめているサイトがあれば
ご教示いただけないでしょうか?
宜しくお願いします。 <(_ _)>
No.2ベストアンサー
- 回答日時:
マニュアルには
> DATETIME 型は(略)サポートしている範囲は '1000-01-01 00:00:00' から '9999-12-31 23:59:59' です。
> TIMESTAMP データ型は(略)'1970-01-01 00:00:01' UTC から '2038-01-19 03:14:07' UTC の範囲があります。
とあるので、「DATETIME型は2038年問題がありますが、TIMESTAMP型は2038年問題を回避することができます」という#1の主張と逆なんだが。
(念の為5.6のマニュアルも調べたけど、範囲は最新版と一緒だった)
> 例えばPostgressのテーブル構造が以下の場合
> CREATE TABLE table_name (
> column_a integer NOT NULL,
> column_b integer,
> "timestamp" bytea
> );
型の違いはマニュアルで確認できます。
https://dev.mysql.com/doc/refman/8.0/ja/data-typ …
https://www.postgresql.jp/document/14/html/datat …
たとえば、Postgresql の integer は MySQLの INT (またはINTEGER)に相当します。
bytea はバイナリ列のデータです。
https://www.postgresql.jp/document/14/html/datat …
そのまま移行させるなら、VARBINAYが該当しそうです。
https://dev.mysql.com/doc/refman/8.0/ja/binary-v …
ただ、"timestamp"のバイナリデータが日時データをなんらかの方法で変化させたものだったら、元の日時のままDATATIME型に収めた方はいろいろと便利かもしれません。
ご教示並びにご指摘ありがとうございます。
「mysqlでは、timestamp型に2038年問題がある。」為DATATIME型に収めようと思います。
<(_ _)>
No.1
- 回答日時:
PostgreSQLとMySQLのデータベース構造は異なるため、直接的な変換はできません。
以下は、PostgreSQLからMySQLにデータを移行する方法の一例です。PostgreSQLのダンプファイルをMySQLのインポート形式に変換する
PostgreSQLのダンプファイルは、以下のような形式で記述されます。
テーブル table_nameの作成 (
column_a整数はヌルではありません。
column_b整数、
"タイムスタンプ" bytea
);
MySQLのインポート形式に変換するには、以下のように記述します。
テーブル table_nameの作成 (
column_a 整数 ヌルではありません、
column_b INT
'タイムスタンプ
データ型やクオートの仕方、予約語の扱いなどが異なるため、手動で変換する必要があります。また、EUCの文字コードをUTF-8に変換する必要もあります。
MySQLの2038年問題
MySQLのDATETIME型は2038年問題がありますが、TIMESTAMP型は2038年問題を回避することができます。ただし、MySQL 5.6以前では、TIMESTAMP型の範囲が1970年から2038年までとなっています。
MySQL 5.6以前を使用している場合、DATETIME型からTIMESTAMP型に変換することができます。ただし、既に値が入っている場合は注意が必要です。
MySQL 5.7以降を使用している場合、TIMESTAMP型の範囲が1970年から2038年までとなっているため、DATETIME型をTIMESTAMP型に変換する必要はありません。
変換に関する詳細は、MySQLの公式ドキュメントを参照してください。
注意点
データベース構造やデータ型、文字コードなどの違いにより、移行後に不具合が発生する可能性があります。移行前に必ずバックアップを取り、移行後に動作確認を行ってください。また、データベースの設定やアプリケーションの設定も変更する必要がある場合があります。必要に応じて、専門家に相談することをおすすめします。
以上、参考になれば幸いです。
kantansi様
大変詳細なる御教示、ありがとうございます。
設定部分など専門家に相談してみようと思います。
ものすごく参考になりました!!
心より御礼申し上げます。
<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルからのselectにおいて...
-
postgreSQLのint型は桁数指定が...
-
pl/pgsqlで変数の扱い
-
賢いSQL文がわからない
-
UNIQUEをつけたときのINDEXテー...
-
クエリアナライザのsp_helpコマ...
-
postgreSQLの正規表現
-
2つの異なるテーブルを和結合し...
-
SQL文の実行に苦労しています。
-
SQL SELECT文 別テーブルのレコ...
-
チェックボックスから、データ...
-
全テーブルのデータの行数
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
-
特定のスキーマのテーブルを一...
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
Access レコードを追加できませ...
-
datapumpの実行方法について
-
CLOB型へのINSERT
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
PostgressからMySQL(MariaDB)...
-
UNIQUEをつけたときのINDEXテー...
-
クエリアナライザのsp_helpコマ...
-
SQL SELECT文 別テーブルのレコ...
-
SQL文作成のお願い
-
3つのテーブルの処理について
-
全テーブルのデータの行数
-
SQLで検索結果の記事を表示したい
-
近い時間によるテーブル結合
-
PostgresSQL8.4でツリー上に取...
-
SELECT結果から重複行を除く方法
-
Perl DBI でSELECT ilikeの結果...
-
2つの異なるテーブルを和結合し...
-
賢いSQL文がわからない
-
チェックボックスから、データ...
-
Viewにインデックスは張れ...
-
データを削除しても表領域の使...
-
異なるスキーマからデータを抽...
おすすめ情報