Original post: http://anothermysqldba.blogspot.com/2014/01/a-mysql-dba-looks-at-postgresql-part2.html
だから私は最近投稿: MySQLのDBAは、PostgreSQLのを見て
この記事はからの移行を検討しますMySQLのにPostgreSQLの 。 私はすぐにそれをフォローアップしますPostgreSQLのバックへの移行MySQLの 。 これらのポストに長期的な目標は、データはそれが生じた場合ときに、各データベースに同じような問題を解決する方法だけでなく、異なるデータベース内でどのように機能するかを示すことです。
:移行のために私は頻繁に使用される例が使用されます世界データベースで利用可能なdev.mysql.comを 。
私もこれを認めますが、私は、より経験豊富な私はMySQLよりもPostgreSQLが 。 PostgreSQLの DBAが書いて、そのような状況にさまざまなソリューションをお勧めかもしれません。 また、これは非常に単純な例です。
このプロセスを確実にするために最初の最初から最後までです。
だから今私は取得させ、PostgreSQLのデータベースが設定され、準備が整いました。
この単純なPerlスクリプト( mysql2pgsql.perlは )からの移行プロセスを支援するのMySQLへのPostgreSQL 。
収集MySQLのデータを、それを準備。
だから私たちは、我々が持っているものを見てみましょう。
世界=> \ DT +市
関係のリスト
スキーマ|名前|タイプ|オーナー|サイズ|説明
-------- + ------ + ------- + ---------- + -------- + ------ -------
公共|街|テーブル| testuserと| 432 MB |
(1行目)
さてカウントが一致し、データが入手可能です。 しかし、今私はMySQLバージョン"ショーはCREATE TABLE」を見たいと思って、であることに注意してくださいMySQLのデータベースを作成し、スキーマを作成、基本的には同じものです。
あなたは表を参照するように見ることができるようにmysqldumpコマンドと同じです
$ mysqldumpを-UのルートP - NO_DATA - データベースの世界 - テーブル·シティ
典型的なよりも多くの作業のMySQLは、単にテーブルの構造を見るために使う必要があるために使用されます。
しかし、我々のデータとスキーマはに上に移動したPostgreSQLのからMySQLを 。
すぐに来て別のポスト... それを後退。
だから私は最近投稿: MySQLのDBAは、PostgreSQLのを見て
この記事はからの移行を検討しますMySQLのにPostgreSQLの 。 私はすぐにそれをフォローアップしますPostgreSQLのバックへの移行MySQLの 。 これらのポストに長期的な目標は、データはそれが生じた場合ときに、各データベースに同じような問題を解決する方法だけでなく、異なるデータベース内でどのように機能するかを示すことです。
:移行のために私は頻繁に使用される例が使用されます世界データベースで利用可能なdev.mysql.comを 。
私もこれを認めますが、私は、より経験豊富な私はMySQLよりもPostgreSQLが 。 PostgreSQLの DBAが書いて、そのような状況にさまざまなソリューションをお勧めかもしれません。 また、これは非常に単純な例です。
このプロセスを確実にするために最初の最初から最後までです。
mysql> create database world;
Query OK, 1 row affected (0.00 sec
# mysql world < world_innodb.sql
mysql> show create table City;
CREATE TABLE `City` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
) ENGINE=InnoDB
mysql> select count(ID) from City\G
*************************** 1. row ***************************
count(ID): 4079
だから今私は取得させ、PostgreSQLのデータベースが設定され、準備が整いました。
# su postgres
$ psql
psql (9.3.2)
Type "help" for help.
postgres=# CREATE DATABASE world;
CREATE DATABASE
# GRANT ALL ON DATABASE world TO testuser;
GRANT
postgres=# \q
この単純なPerlスクリプト( mysql2pgsql.perlは )からの移行プロセスを支援するのMySQLへのPostgreSQL 。
# su testuser
$ cd
$ pwd
/home/testuser
$ wget http://pgfoundry.org/frs/download.php/1535/mysql2pgsql.perl
収集MySQLのデータを、それを準備。
mysqldump -u root -p world > mysql2postgresql.sql
$ ./mysql2pgsql.perl mysql2postgresql.sql mysql2postgresql.pgsql
table "city" will be dropped CASCADE
"city_id_seq"--
table "country" will be dropped CASCADE
table "countrylanguage" will be dropped CASCADE
$ psql world < mysql2postgresql.pgsql | more
DROP TABLE
DROP SEQUENCE
CREATE SEQUENCE
CREATE TABLE
INSERT 0 1
..
0 1を挿入
注意:2他のオブジェクトへのドロップカスケード
詳細:テーブルcountrylanguageにcountrylanguage_countrycode_fkey制約カスケードをドロップ
テーブルの街にcity_countrycode_fkey制約カスケードをドロップ
..
0 1を挿入
0 1を挿入
DROP TABLEの
CREATE TABLEを
0 1を挿入
0 1を挿入
..
0 1を挿入
CREATE INDEXの
ALTER TABLEの
だから私たちは、我々が持っているものを見てみましょう。
$ psql -d world
psql (9.3.2)
Type "help" for help.
world=> \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | city | table | testuser
public | country | table | testuser
public | countrylanguage | table | testuser
(3 rows)
市から世界=> SELECT COUNT(ID);
カウント
-------
4079
(1行目)
世界=>市の上限10から選択*;
ID |名前|国番号|地区|人口
---- + ------------------------------------- + ------- ------ + ---------------------- + ------------
1 |カブール| AFG | Kabol |178万
2 |カンダハール| AFG |カンダハール| 237500
3 |ヘラート| AFG |ヘラート| 186800
4 |マザリシャリフ| AFG |バルフ| 127800
5 |アムステルダム| NLD |ホラント| 731200
6 |ロッテルダム| NLD |南ホラント| 593321
7 |ハーグ| NLD |南ホラント| 440900
8 |ユトレヒト| NLD |ユトレヒト| 234323
9 |アイントホーフェン| NLD |北ブラバント| 201843
10 |ティルブルグ| NLD |北ブラバント| 193238
(10行)
世界=> \ DT +市
関係のリスト
スキーマ|名前|タイプ|オーナー|サイズ|説明
-------- + ------ + ------- + ---------- + -------- + ------ -------
公共|街|テーブル| testuserと| 432 MB |
(1行目)
さてカウントが一致し、データが入手可能です。 しかし、今私はMySQLバージョン"ショーはCREATE TABLE」を見たいと思って、であることに注意してくださいMySQLのデータベースを作成し、スキーマを作成、基本的には同じものです。
$ pg_dump -t city -s world
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: city; Type: TABLE; Schema: public; Owner: testuser; Tablespace:
--
CREATE TABLE city (
id integer DEFAULT nextval('city_id_seq'::regclass) NOT NULL,
name character(35) DEFAULT ''::bpchar NOT NULL,
countrycode character(3) DEFAULT ''::bpchar NOT NULL,
district character(20) DEFAULT ''::bpchar NOT NULL,
population integer DEFAULT 0 NOT NULL
);
ALTER TABLE public.city OWNER TO testuser;
--
-- Name: city_pkey; Type: CONSTRAINT; Schema: public; Owner: testuser; Tablespace:
--
ALTER TABLE ONLY city
ADD CONSTRAINT city_pkey PRIMARY KEY (id);
--
-- Name: city_countrycode_idx; Type: INDEX; Schema: public; Owner: testuser; Tablespace:
--
CREATE INDEX city_countrycode_idx ON city USING btree (countrycode);
--
-- PostgreSQL database dump complete
--
あなたは表を参照するように見ることができるようにmysqldumpコマンドと同じです
$ mysqldumpを-UのルートP - NO_DATA - データベースの世界 - テーブル·シティ
典型的なよりも多くの作業のMySQLは、単にテーブルの構造を見るために使う必要があるために使用されます。
しかし、我々のデータとスキーマはに上に移動したPostgreSQLのからMySQLを 。
すぐに来て別のポスト... それを後退。