phpMyAdminを利用したMySQLデータのインポート形式一覧とデータ
2014/11/22
phpMyAdminにてMySQLデータベースからエクスポートできる
各ファイル形式の出力結果を、
再びインポート可能な形式で取り込みを行った結果です。
特に意味はありませんが、どのような形式でインポートが行えるのかの、
サンプルデータとしてお考えください。
はじめに
phpMyAdminではSQL文以外の様々なデータ形式でエクスポートが行えます。
実際にはほとんどSQLによるエクスポートをして、
インポートするという利用方法しか使っていませんが、
ざっといろいろな形式でインポートしてみると、
どのような成果物が出力されるのかを試してみましたのでご参考まで。
テストデータについて
今回エクスポートに利用したデータは以下のような4レコードのみです。
このデータをphpMyAdminにて各種形式でエクスポートを行って、
エクスポートした形式でインポート可能な形式のデータを読み込みます。
エクスポートフォーマットの選択肢
phpMyAdminのエクスポートでは以下のような
エクスポート選択肢が指定できます。
エクスポート結果の実データ
phpMyAdminからエクスポートフォーマット種別については、
以下の投稿でご紹介しています。
phpMyAdminを利用したMySQLデータのエクスポート形式一覧とデータ
以下はそのテストデータの出力結果です。
CodeGen.cs
CSV.csv
MS Excel用の CSV.csv
Microsoft™ Word 2000.doc
JSON.json
LaTex.tex
MediaWikiテーブル.txt
OpenDocument スプレッドシート.ods
OpenDocument テキスト.odt
PDF.pdf
PHP配列.php
SQL.sql
Texy!テキスト.txt
Excel 97-2003 XLS ワークブック.xls
Excel 2007 XLSX ワークブック.xlsx
XML.xml
YAML.yml
phpMyAdminのインポート形式の選択肢
phpMyAdminでは以下のようなインポートフォーマットが選択できます。
インポートファイルの選択
取り込み対象データベースを選択したうえで[インポート]をクリックすることで、
インポート画面が表示されます。
このインポート画面の最上部でインポート対象ファイルの選択を行います。
この際にPHPとphpMyAdminのインストール後に特に変更をしていない場合には、
(最長: 2,048KiB) と表示されていると思います。
アップロードの上限が2MBに制限されています。
この上限設定の変更については以下の投稿でご紹介しています。
ファイルアップロード上限の変更(PHP/phpMyAdmin/wordpress)
各入力の結果
今回は入力フォーマットごとにデータベースを作成し、
その新規データベースに対して、エクスポートデータを取り込みます。
CSV
実際に取り込みを行っているデータは以下のようなデータです。
CSV.csv
1 2 3 4 |
"1","2013-09-16" "2","2013-09-17" "3","2013-09-15" "4","2013-09-17" |
取り込み用のファイルを選択すると、自動的にフォーマットの部分も[CSV]に変更されます。
デフォルトの状態での取り込みによって返された処理結果
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS `csv`.`TABLE 1` ( `COL 1` INT( 1 ) , `COL 2` VARCHAR( 10 ) ) ENGINE = MYISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;# 返り値が空でした(行数0) INSERT INTO `csv`.`TABLE 1` ( `COL 1` , `COL 2` |
“CSV”データベースの内容確認
さすがにCSVによるテーブル生成となると、
テーブル名は[table_1]などのお任せ名称になってしまいますし、
テーブルの定義もphpMyAdminにお任せといった感じになります。
その為、当然ですがこのCSVインポートでは、
元からあるテーブルのデータをCSVで書き出し、同じテーブルを指定してCSVを読み込む、
テーブルの構造を先に準備しておき、一括でデータを取り込むといった、
データバックアップと初期データ投入の用途などでは利用できそうです。
ちなみに、テーブル(table_1)を選択した状態で、
テーブルデータを差し替えるファイルとした場合には、以下のようなSQLが実行されます。
1 2 3 4 |
REPLACE INTO `table 1` VALUES ('1', '2013-09-16')# 1 行変更しました。 REPLACE INTO `table 1` VALUES ('2', '2013-09-17')# 1 行変更しました。 REPLACE INTO `table 1` VALUES ('3', '2013-09-15')# 1 行変更しました。 REPLACE INTO `table 1` VALUES ('4', '2013-09-17')# 1 行変更しました。 |
既にテーブルが存在している場合には、
必要な値のみが取り込まれるため、これでも十分かもしれません。
OpenDocument スプレッドシート
実際に取り込みを行っているデータは以下のようなデータです。
OpenDocument スプレッドシート.ods
取り込み用のファイルを選択すると、自動的にフォーマットの部分も
[OpenDocumentスプレッドシート]に変更されます。
興味深いのは[%]や[¥]マークを置き換えるオプションがある点です。
デフォルトの状態での取り込みによって返された処理結果
1 2 3 4 5 |
CREATE TABLE IF NOT EXISTS `opendocumentss`.`test` (`A` int(1), `B` varchar(10)) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;# 返り値が空でした(行数0) INSERT INTO `opendocumentss`.`test` (`A`, `B`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17');# 4 行変更しました。 |
“opendocumentss”データベースの内容確認
このスプレッドシートによるテーブル生成となるとCSV同様に、
テーブルの定義もphpMyAdminにお任せといった感じになります。
この方式も
元からあるテーブルのデータをODSで書き出し、同じテーブルを指定してODSを読み込む、
テーブルの構造を先に準備しておき、一括でデータを取り込むといった、
データバックアップと初期データ投入の用途などでは利用できそうです。
OpenDocumentスプレッドシートの取り込みの場合には、
既に取り込んでいるファイルを再度取り込んでも、
同じ処理が行われREPLACE INTO文に変更するような方法は見当たりませんでした。
SQL
実際に取り込みを行っているデータは以下のようなデータです。
SQL.sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
-- phpMyAdmin SQL Dump -- version 3.4.2 -- http://www.phpmyadmin.net -- -- ホスト: localhost -- 生成時間: 2013 年 9 月 17 日 15:00 -- サーバのバージョン: 5.6.10 -- PHP のバージョン: 5.2.17 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- データベース: `test` -- -- -------------------------------------------------------- -- -- テーブルの構造 `test` -- CREATE TABLE IF NOT EXISTS `test` ( `col1` int(5) NOT NULL AUTO_INCREMENT, `col2` date DEFAULT NULL, PRIMARY KEY (`col1`) ) ENGINE=InnoDB DEFAULT CHARSET=armscii8 AUTO_INCREMENT=5 ; -- -- テーブルのデータをダンプしています `test` -- INSERT INTO `test` (`col1`, `col2`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
取り込み用のファイルを選択すると、自動的にフォーマットの部分も[SQL]に変更されます。
デフォルトの状態での取り込みによって返された処理結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
-- phpMyAdmin SQL Dump -- version 3.4.2 -- http://www.phpmyadmin.net -- -- ホスト: localhost -- 生成時間: 2013 年 9 月 17 日 15:00 -- サーバのバージョン: 5.6.10 -- PHP のバージョン: 5.2.17 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";# 返り値が空でした(行数0) SET time_zone = "+00:00";# 返り値が空でした(行数0) /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;# 返り値が空でした(行数0) /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;# 返り値が空でした(行数0) /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;# 返り値が空でした(行数0) /*!40101 SET NAMES utf8 */;# 返り値が空でした(行数0) -- -- データベース: `test` -- -- -------------------------------------------------------- -- -- テーブルの構造 `test` -- CREATE TABLE IF NOT EXISTS `test` ( `col1` int(5) NOT NULL AUTO_INCREMENT, `col2` date DEFAULT NULL, PRIMARY KEY (`col1`) ) ENGINE=InnoDB DEFAULT CHARSET=armscii8 AUTO_INCREMENT=5 ;# 返り値が空でした(行数0) -- -- テーブルのデータをダンプしています `test` -- INSERT INTO `test` (`col1`, `col2`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17');# 4 行変更しました。 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;# 返り値が空でした(行数0) /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;# 返り値が空でした(行数0) /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;# 返り値が空でした(行数0) |
SQLによるインポートでは、出力したテーブルがしっかりと再現できる方法です。
ただ、データベースなどからSQLでダンプできるような場合以外は、
手でSQL文を組み立てる必要があるため、
ケースバイケースで他のフォーマットと使い分ければいいでしょう。
SQLの実行では、ファイルのSQL文がそのまま処理されますので、
エクスポートしたデータベースと、インポートしたデータベースでの差異はありません。
※MySQL間の移行の場合にはという条件はあると思いますが。
しかしながら、MySQL以外のデータベースなどで出力したSQLなどの場合は、
テーブルの型などで互換性のないものもありますので注意が必要です。
Excel 97-2003 XLS ワークブック
実際に取り込みを行っているデータは以下のようなデータです。
Excel 97-2003 XLS ワークブック.xls
取り込み用のファイルを選択すると、自動的にフォーマットの部分も
[Excel 97-2003 XLS ワークブック]に変更されます。
デフォルトの状態での取り込みによって返された処理結果
“excel972003xlswb”データベースの内容確認
このスプレッドシートによるテーブル生成となるとCSV同様に、
テーブルの定義もphpMyAdminにお任せといった感じになります。
この方式も
元からあるテーブルのデータをODSで書き出し、同じテーブルを指定してODSを読み込む、
テーブルの構造を先に準備しておき、一括でデータを取り込むといった、
データバックアップと初期データ投入の用途などでは利用できそうです。
1 2 3 4 5 |
CREATE TABLE IF NOT EXISTS `excel972003xlswb`.`test` (`A` int(1), `B` varchar(10)) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;# 返り値が空でした(行数0) INSERT INTO `excel972003xlswb`.`test` (`A`, `B`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17');# 4 行変更しました。 |
Excel 2007 XLSX ワークブック
実際に取り込みを行っているデータは以下のようなデータです。
Excel 2007 XLSX ワークブック.xlsx
取り込み用のファイルを選択すると、自動的にフォーマットの部分も[CSV]に変更されます。
デフォルトの状態での取り込みによって返された処理結果
1 2 3 4 5 |
CREATE TABLE IF NOT EXISTS `excel2007xlsxwb`.`test` (`A` int(1), `B` varchar(10)) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;# 返り値が空でした(行数0) INSERT INTO `excel2007xlsxwb`.`test` (`A`, `B`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17');# 4 行変更しました。 |
“excel2007xlsxwb”データベースの内容確認
このスプレッドシートによるテーブル生成となるとCSV同様に、
テーブルの定義もphpMyAdminにお任せといった感じになります。
この方式も
元からあるテーブルのデータをODSで書き出し、同じテーブルを指定してODSを読み込む、
テーブルの構造を先に準備しておき、一括でデータを取り込むといった、
データバックアップと初期データ投入の用途などでは利用できそうです。
XML
実際に取り込みを行っているデータは以下のようなデータです。
XML.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?xml version="1.0" encoding="utf-8"?> <!-- - phpMyAdmin XML Dump - version 3.4.2 - http://www.phpmyadmin.net - - ホスト: localhost - 生成時間: 2013 年 9 月 17 日 15:04 - サーバのバージョン: 5.6.10 - PHP のバージョン: 5.2.17 --> <pma_xml_export version="1.0"> <!-- - データベース: 'test' --> <database name="test"> <!-- テーブル test --> <table name="test"> <column name="col1">1</column> <column name="col2">2013-09-16</column> </table> <table name="test"> <column name="col1">2</column> <column name="col2">2013-09-17</column> </table> <table name="test"> <column name="col1">3</column> <column name="col2">2013-09-15</column> </table> <table name="test"> <column name="col1">4</column> <column name="col2">2013-09-17</column> </table> </database> </pma_xml_export> |
取り込み用のファイルを選択すると、自動的にフォーマットの部分も[XML]に変更されます。
デフォルトの状態での取り込みによって返された処理結果
1 2 3 4 5 |
CREATE TABLE IF NOT EXISTS `xml`.`test` (`col1` int(1), `col2` varchar(10)) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;# 返り値が空でした(行数0) INSERT INTO `xml`.`test` (`col1`, `col2`) VALUES (1, '2013-09-16'), (2, '2013-09-17'), (3, '2013-09-15'), (4, '2013-09-17');# 4 行変更しました。 |
“xml”データベースの内容確認
このXLMによるテーブル生成でもExcelと同様に
テーブルの定義もphpMyAdminにお任せといった感じになります。
この方式も
元からあるテーブルのデータをODSで書き出し、同じテーブルを指定してODSを読み込む、
テーブルの構造を先に準備しておき、一括でデータを取り込むといった、
データバックアップと初期データ投入の用途などでは利用できそうです。
さいごに
結局のところ、SQLによるインポート以外は、
空のテーブル定義をあらかじめ準備しておき初期データ投入程度の利用法になりますが、
簡単にエクセルやエクセルから吐き出したCSVなどで、
MySQLデータとして取り込めるのは、ケースバイケースで利用できると思います。
とはいえ、データのバックアップでは、
SQLを利用する以外に選択肢はないという結論にもなってしまいましたが。
phpMyAdminはphpMyAdmin devel teamによる著作物です。
phpMyAdminはGNU General Public License, version 2.によってライセンスされています。
PHPはPHP License (原文)に基づいてOpen Source Initiativeに承認されライセンスされています。
Adobe、Acrobat、Adobe Reader、Acrobat Reader、
Adobe ロゴ、Adobe AIR、Flash、Flash Playerは、
Adobe Systems Incorporatedの米国ならびに他の国における商標または登録商標です。
Microsoft® Excel®は米国 Microsoft Corporation の米国およびその他の国における商標または名称です。
Microsoft® Word®は米国 Microsoft Corporation の米国およびその他の国における商標または名称です。
関連記事
-
KAGOYA™(カゴヤ)の共用レンタルサーバENTRYプランに「MySQLオプション」の追加手順
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
KAGOYA™(カゴヤ)のMySQL単独プランの利用手順
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminを利用したMySQLデータのAuto Increments Option動作比較
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminが[mysql拡張がありません。PHP の設定をチェックしてみてください。]という場合
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminでMySQLデータをサーバー上からインポートする
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(テーブル単位)それでもphpMyAdminでエクスポートがサーバーエラーになってしまう場合の対処法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminでMySQLデータをサーバー上にエクスポートする
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpMyAdminを利用したMySQLデータのエクスポート
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
phpmyadminダウンロードが始まらない時の対処
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイルアップロード上限の変更(PHP phpMyAdmin wordpress)
Google or AdMax Promotion(it) 禁断の機能がau公式 …