
お世話になります。
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ランキング
-
SQL SELECT文 別テーブルのレコ...
-
結合した場合の取得時間差について
-
インデックス監視
-
Access コンボボックスを使った...
-
網点について
-
MicrosoftAccess 数十万件のデ...
-
CLOB型へのINSERT
-
pgaの最大使用サイズについて
-
ACCESSのリンクについて
-
VBAで データベースにデータを...
-
JSPでデータベース作成
-
ACCESS 複数テーブル・複数フィ...
-
排他制御の仕方
-
アクセスでフォームに追加項目...
-
Viewにインデックスは張れ...
-
表領域の違うEXPORT IMPORT
-
Accessのテーブル内の文字の置...
-
テーブル名を[]でくくらないと...
-
アクセスのデータが一件文字化...
-
VB2005 CSVファイルをテーブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルからのselectにおいて...
-
postgreSQLのint型は桁数指定が...
-
クエリアナライザのsp_helpコマ...
-
UNIQUEをつけたときのINDEXテー...
-
PostgressからMySQL(MariaDB)...
-
PostgresSQL8.4でツリー上に取...
-
SQL SELECT文 別テーブルのレコ...
-
SQL文作成のお願い
-
Postgresqlの自己結合について
-
チェックボックスから、データ...
-
Oracle でのデータベースサイズ...
-
ビット演算結果の取得
-
Perl DBI でSELECT ilikeの結果...
-
検索スピードの速い方法を教え...
-
ベスト3の抽出方法
-
もうちょっと賢いSELECT文が書...
-
こんばんは。
-
テーブル作成 外部参照 配列
-
自動で生成されるユニークID
-
plpgsqlのエスケープ文字について
おすすめ情報