PostgreSQLとPHPでAutocompleteを作る Part 1
今回はskillsという名前のMySQLのSQLファイルを変換してPostgreSQL用にダンプファイルを作成します。 (これがなかなか時間かかりました......) それについても書きたいと思います。
※最近まで手順がばらばらのまま記事を掲載しておりました。お詫びいたします。また初心者にもわかりやすいように言い回しがくどい箇所があるかもしれません。ご了承ください。
SQLファイルはこちら
※emacsなどにコピーした後にファイルの拡張子を.sqlにしてください。
https://drive.google.com/file/d/0B7YeptbCjhpaTVRoN3VMTjI4eW8/view?usp=sharing
MySQLでデータベースを作成する
はじめにMySQLを起動(ここではmysqlをインストールした前提になります)
mysql> show databases;
すると以下のようになると思います。(個人の環境によって違う場合もあります)
MySQLでcreate databaseする。今回はskillsというデータベースを作ります。(このときcreate databaseしないで次に進めばUnknown databaseとなるので注意。)
mysql> create database skills;
もう一度show database;として、skillsというデータベースが作成されていることを確認してください。
MySQLにデータを格納します。
mysql -u root -D mysql -p < skills.sql
いったんexitとしたいところですが、ここでテーブルも作っておかないと
このように表示されてしまいます。ということでMySQLでテーブルを定義しましょう。
sqlファイルをリダイレクトしてデータベースに格納します。
stnet@m1:$ mysql -u root -D skills -p < skills.sql
MySQLからPostgreSQL用のファイルに変換する
ファイルがある場所でダンプコマンドを実行します。今回はdatabase_nameとtable_name、filenameをskillsとします。
mysqldump -uroot -p database_name --compatible=postgresql -t -c --skip-quote-names --skip-extended-insert --skip-add-locks --default-character-set=utf8 table_name | sed "s/\\\'/\'\'/g" > dump-filename.sql
PostgreSQLでcreate databaseする。今回はskillsというデータベースを作ります。
stnet@m1:$ sudo -i -u postgres [sudo] password for {usename}: postgres@m1:~$ psql psql (9.5.5) Type "help" for help. postgres=# create database skills;
今回の目的はダンプしたdump-skills.sqlをPostgreSQLのデータベースに格納したいのでMySQLと同様にPostgreSQLでもCREATE DATABASEしましょう。続けてテーブルも作らないと以下のようなエラーになります。
Password for user postgres: ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (1,'ActionScript'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (2,'AppleScript'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (3,'Asp'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (4,'Basic'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (5,'C'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (6,'C++'); ^ . . . .
ということでPostgreSQLでテーブルを作成
変換したファイルでPostgreSQLのデータベースを作成する
stnet@m1:$ psql -U postgres -d skills < dump-skills.sql
をすると
INSERT 0 1 というのが続けばデータの格納がうまくいっています。
selectを使ってskillsデータベースを確認してみましょう。ここまででautocompleteの下準備が出来上がりました。
stnet@m1:$ sudo -i -u postgres postgres@m1:$ psql skills Password: psql (9.5.4) Type "help" for help. skills=# select * from skills;
次回はPHPファイルを作ってPostgreSQLとconnectし、Autocompleteを実現について描いていきたいと思います。