
お世話になります。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl DBI でSELECT ilikeの結果...
-
postgreSQLのint型は桁数指定が...
-
PostgressからMySQL(MariaDB)...
-
テーブルからのselectにおいて...
-
ACCESS 複数テーブル・複数フィ...
-
Access レコードを追加できませ...
-
SQL*LoaderとInsertの違いについて
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
oracleのプライマリ・キー名の変更
-
Data Pump で大量データインポ...
-
INDEXの無効化
-
CLOB型へのINSERT
-
インラインビューの更新権限に...
-
表領域の使用率がもうすぐ100%
-
Truncate以外で高速にテーブル...
-
ActiveX DLLでのオラクルのトラ...
-
oracle 10g ユーザやスキーマご...
-
年度毎にシーケンスの初期化?
-
Oracle8i ストアドプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
PostgressからMySQL(MariaDB)...
-
PostgresSQL8.4でツリー上に取...
-
UNIQUEをつけたときのINDEXテー...
-
クエリアナライザのsp_helpコマ...
-
近い時間によるテーブル結合
-
チェックボックスから、データ...
-
postgreSQLの正規表現
-
pl/pgsqlで変数の扱い
-
select文の書き方で分からない...
-
SQL SELECT文 別テーブルのレコ...
-
マルチテーブル・インサート
-
ビット演算結果の取得
-
SQL文作成のお願い
-
自動で生成されるユニークID
-
phpPgAdminからSQL文を発行し、...
-
前方一致が動的に変更される場...
-
Viewにインデックスは張れ...
-
データを削除しても表領域の使...
おすすめ情報