mysqlデータベースをインポートします。 データベースをエクスポートします (PHPMyAdmin)。 MySQL へのデータの追加: ツール

大規模な MySQL データベースをサーバーにインポートする方法をよく尋ねられます。 デフォルトでは、phpMyAdmin にはインポートされるデータベースのサイズに制限があることが知られています。

ダンプが許容制限を大きく超えていない場合は、ダンプをいくつかの部分に分割し、複数のパスでインポートできます。 たとえば、制限が 2 MB で、データベースのサイズが 5 ~ 10 MB である場合、これは正当化されます。 100MB のデータベースを 50 の部分に「分割」するのは、かなり労力と時間がかかるプロセスであることは明らかです。

この問題を解決するには、いくつかのオプションがあります。

Webサーバー構成の編集

VDS/VPS では特に問題はなく、構成を修正するだけで済みます。 つまり、php.ini で、サーバーにアップロードされるファイルの許容最大値、POST メソッドを使用して転送されるファイルの最大サイズを増やします。

Post_max_size = 2000M、upload_max_filesize = 2000M

さらに、データベースが非常に大きい場合は、許容される最大スクリプト実行時間を増やす必要があります。

最大実行時間 = 32000 最大入力時間 = 32000

念のため、許容される RAM のサイズを増やすことができます。

メモリ制限 = 512M

変更を行った後は、必ず Web サーバーを再起動してください。

この方法が仮想ホスティングに適していないことは明らかです。 構成を編集できることを意味するものではありません。

サイペックスダンパー

サードパーティのソフトウェアを使用できます。 そして、注目に値する最初のアプリケーションは Sypex Dumper です。

何年も前に初めてこれを使用し、その機能と利点をすべて評価したので、私はこれを「必須」とラベル付けしても問題ありません。 Sypex Dumper はインストール不要の PHP サーバー アプリケーションです。 たとえば、これをサイトのルートの sxd ディレクトリにコピーし、ブラウザで http://Your_Site/sxd/ のように呼び出すだけで十分です。 最初にデータベースのダンプをバックアップ ディレクトリに配置する必要があることに注意してください。 スクリプトを初期化すると、データベースに接続するための認証パネルが表示されます。 ユーザー名とパスワードを入力します。 ホストとポートは、特定の場合にのみオプションです。

認証後、データベースのインポートに直接進むことができます。 フィールド内 「データベース」接続しているデータベースが選択され、フィールドに "ファイル"以前にバックアップ ディレクトリにアップロードしたダンプが表示されます。

ほとんどの場合、追加の設定は必要なく、「実行」ボタンをクリックすることでインポートを安全に開始できます。 データベースのサイズとインターネット接続速度によっては、インポートに時間がかかる場合があります。 インポート中に、現在データベースにインポートされているテーブルを確認できます。 スクリプトが完了すると、実行ログが表示されます。 次のようになります。

実際にはこれですべてです。データベースがインポートされました。

コンソール

コンソールを介したインポートは考慮しません。 私以外でコンソールを使用している人は、データベースをインポートする方法を知っていると思います。 ただし、特別な訓練を受けていない一般ユーザーは、そこには行かない方がよいでしょう。 一部のコマンドを実行すると、サーバーの完全なクラッシュなどの重大な結果につながる可能性があります。

ついに

Sydex Dumper が唯一かつ正しい解決策であると言うつもりはありません。 ユーザーが一定の知識とサーバー設定への適切なアクセスを必要とする、より洗練された方法は他にもあります。

しかし、共有ホスティング環境では、Sydex Dumper は間違いなく不可欠なアシスタントとなるでしょう。

私の電報を購読して、サイトに掲載されていないものも含め、新しい資料をいち早く受け取りましょう。

データベースを SQL ファイルにバックアップまたはエクスポートした場合は、phpMyAdmin を介してホスティング アカウントの MySQL データベースの 1 つにデータベースをインポートできます。

注記。 MySQL データベースには CREATE DATABASE 行があってはなりません。 そうしないと、インポートが失敗する可能性があります。

phpMyAdmin インターフェイスを使用すると、一度に 8 MB のデータをインポートできます。 より大きなファイルをインポートする必要がある場合は、ファイルを 8 MB のいくつかの部分に分割します。

注意! Web サイトをスムーズに実行し続けるために、マネージド WordPress ホスティング用のデータベースをインポートしている場合。

phpMyAdmin を使用した SQL ファイルの MySQL データベースへのインポート

この後、SQL ファイルが実行され、SQL ファイルで選択したデータベースが更新されます。 データベースの復元には数分かかる場合があります。

注記。エラー メッセージ「スクリプト タイムアウトが経過しました。インポートを終了したい場合は、同じファイルを再送信してください。そうすればインポートが再開されます。」というエラー メッセージが表示された場合は、すぐに同じファイルを選択してプロセスを再開できます。

ほとんどのサイトのデータベース (DB と略されます) のサイズ (重量) は数十 MB (メガバイト) です。 さまざまなプロジェクトの開始時のデータベースの初期サイズはサイト自体 (CMS) の構造によって異なりますが、その後、新しいレコードが出現するたびにその重みが増加します。

記録には、ユーザー登録、コメント、個人メッセージ、製品、ニュース、およびサイト データベースに保存されているその他のデータに関する情報が含まれる場合があります。

私は、データベース サイズが 500 MB (マガバイト) を超え、中には 2 GB (ギガバイト) に達するサイトもいくつか扱う機会がありました。 このサイズのデータ​​ベースを標準的な方法で移行するのは (ホスティングとブラウザの制限のため) 難しいため、そのような問題 (大規模なデータベースの移行) の解決に役立ついくつかの作業方法を共有します。

Sypex Dumper 経由で大規模な MySQL データベースをエクスポート (ダウンロード)

そこで、より簡単なオプション、つまり既成のソリューションを使用して、目前の問題を解決する検討を始めましょう。

「Sypex Dumper」は、phpMyAdmin を使用せずにデータベースを操作できるようにする、PHP で書かれたソフトウェア製品です。 Sypex ダンパーの利点は次のとおりです。

  1. 多言語対応 (多くの言語をサポート)。
  2. このスクリプトには無料バージョンがあります (私たちの目的にはこれで十分です)。
  3. タスク完了の高速化。
  4. 大規模なデータベースを操作する。
  5. 便利で直感的なインターフェイス。
  6. 他にもたくさんの興味深い「チップ」があります。

これは、大規模なデータベースをダウンロード (転送) するために使用します。

今後使用するために特定のサイトのデータベースをエクスポート (受信、ダウンロード) するには、次の手順を実行する必要があります。

1. 当社ウェブサイトから無料でご利用いただけます。

2. SXDあなたにとって都合の良い方法で。

3. 次に、次へ進みます (どこ your_site.ru 入るには».

4. 開いたページ (認証が成功した場合) で、「」セクションを 1 回クリックします。 輸出» トップメニューにある。 ユーザーが複数のデータベースを利用できる場合は、エクスポート (ダウンロード) するデータベースをドロップダウン リストから選択します。 残りの設定は変更しないままにして、「」をクリックします。 実行する».


注意したい、データベース全体ではなく、必要に応じてテーブルの一部のみをエクスポートできるということです。

5. データベースの保存プロセスが完了したら (進行状況バーで確認できます)、適切なボタンをクリックして必要なデータベースをダウンロードできます。


さらに、エクスポートされたデータベースはすべて、途中で Web サイトに保存されます。 /sxd/バックアップ/。 データベースの保存に失敗した場合は、フォルダーが バックアップ書き込み権限は777です。

以上でデータベースのエクスポート(ダウンロード)は完了です。

Sypex Dumper を介した大規模な MySQL データベースのインポート (ダウンロード)

上記では、必要なデータベースを取得する方法を説明しましたが、次にそれを別のプロジェクトに転送 (インポート) する必要があり、これを行うには次の操作を行います。

1. 当社ウェブサイトから無料でご利用いただけます。

2. アーカイブを解凍し、フォルダーを Web サイトにアップロードします SXDあなたにとって都合の良い方法で。

3. フォルダへ /sxd/バックアップ/以前に受信した (ダウンロードした) データベースをロードします。

4. 次にアドレスに移動します http://your_site.ru/sxd/index.php(どこ your_site.ru– Web サイトのドメイン)、その後、データ入力フォームが目の前に開きます。 その中で、必要なデータベースを管理する権限を持つユーザーのデータを指定し、「」をクリックします。 入るには».

5. 開いたページ (認証が成功した場合) で、「」セクションを 1 回クリックします。 輸入» トップメニューにある。 ユーザーが複数のデータベースを使用できる場合は、データをインポート (ロード) するデータベースをドロップダウン リストから選択します。 残りの設定は変更しないままにして、「」をクリックします。 実行する».


注意したいデータベース全体ではなく、必要に応じてテーブルの一部だけをインポートできること。

6. データベースのインポート (ロード) プロセスが完了すると (進行状況バーで確認できます)、タスクは完了したと見なされます。


SSH ターミナル経由で大規模な MySQL データベースをエクスポート (ダウンロード)

SSH は、システムまたはサーバーをリモートで (特別なコマンドを使用して) 管理できるようにするネットワーク プロトコルです。 Windows には、このプロトコルを操作するためのプログラムが多数あり、その中で最も人気のあるのは「PuTTY」です。

たとえば、一部のホスティング サイトでは、コントロール パネルにターミナルが組み込まれています。 あまり深くは考えずに、彼の例を使用してタイトルで説明した問題を考えてみましょう。 それは注目に値します以下で説明する操作は別の SSH クライアントで実行できることを確認してください。

1. ターミナルを起動します。 次のようになります。


2. サードパーティ プログラムを通じてサーバーに接続する場合は、適切なデータを入力してログインします (データは、ホスティング コントロール パネルまたはホスティング プロバイダーから取得できます)。

2番- これ:

Mysqldump -u ユーザー名 -p データベース > バックアップ.sql

エクスポート自体を直接指定します。ここで、

ユーザー名– データベースにアクセスできるユーザーのログイン。

データベース– エクスポートするデータベースの名前。

バックアップ.sql– データベースが保存されるファイルの名前と、 からの相対パス。 この設計では、データベースはホスティングのルートに保存されます。

4. 3番目のステップで入力キーボードで「」。 注記

サーバーが再び SSH 経由でコマンドを受け入れる準備が整うと、データベースのエクスポートが完了し、FTP またはホスティング ファイル マネージャー経由でダウンロードできることになります。

エクスポート (およびインポート) プロセスは SSH ではブロードキャストされません。データベースが非常に大きい場合は、20 分以上後にサーバーから応答を受け取る可能性があるため、しばらくお待ちください。

SSH ターミナル経由で大規模な MySQL データベースをインポート (ダウンロード)

SSH が何であるかについてはすでに説明しました。次に、以前にダウンロードしたデータベースを別のプロジェクトにインポートする方法を見てみましょう。

1. あなたの根元までホスティングしている場合は、以前にダウンロードしたデータベースを便利な方法でダウンロードします。

2. SSH 経由でホスティング/サーバーに接続します。

したがって、私たちは間違いなくホスティングのルートに行きます、そして 2番- これ:

したがって、現在のディレクトリのファイルとディレクトリの完全なリストが得られます。 以前にダウンロードしたデータベースがその中に含まれていることを確認しましょう。

4. すべてが正常で、ベースが所定の位置に配置されている場合は、最後のコマンドを入力します。

Mysql -u ユーザー名 -p データベース< backup.sql

ユーザー名– データベースにアクセスできるユーザーのログイン。

データベース– データをインポートするデータベースの名前。

バックアップ.sql– ダウンロードされるファイルの名前と からの相対パス。 この設計では、データベースはホスティング ルートからインポートされます。

5. コマンドを入力すると、指定したユーザーのパスワードを入力するように求められます。 4番目のステップで。 パスワードを入力して「」をクリックしてください 入力キーボードで「」。 注記 SSH 端末でのパスワードの入力は表示されません。つまり、パスワードを入力しても貼り付けても、その場所には常に空のスペースが存在します。

この後、サーバーが再び SSH 経由でコマンドを受け入れる準備が整うと、データベースのインポートが完了し、プロジェクトの作業を続行できることになります。

こんにちは、友達! 🙂

今日は、コンソールでの MySQL の操作についての会話を続け、MySQL データベースをエクスポートする手順に注目することにしました。

この記事では、MySQL データベースをダンプする方法と、MySQL から Excel ファイルおよび csv 形式にデータをアップロードする方法について説明します。

1 つまたは複数のデータベースのダンプの作成、個々のテーブルおよび任意の結果からのデータのエクスポートなど、情報を取得するためのさまざまなオプションを見ていきます。 選択するリクエスト。

また、サーバー コンソールと MySQL コマンド ラインで MySQL データベースからデータを出力する方法についても説明します。

この記事では、phpMyAdmin やその他のビジュアル ツールを使用してデータをエクスポートする方法については説明しません。

まず第一に、このトピックに関する十分な資料がインターネット上にすでに存在しているからです。 しかも、それは高品質の素材なので、コピーペーストする気はありません。

次に、私自身、記事の 1 つで、MySQL データベースから SQL ファイルに情報を出力するプロセスを簡単にレビューしました。そこでは、 について説明しました。

そのため、コンソールの操作に関する情報が役立つ可能性のあるプロの開発者やシステム管理者ではなく、データベースを phpMyAdmin にエクスポートする方法の説明だけを求めて来た場合は、上記のリンクにある情報を読むだけにとどめることができます。 。

私のことを正しく理解していただきたいのです。私は決してあなたを気分を害するつもりはありませんが、あなたのビジネスに最大限の利益をもたらすように時間を費やし、探していたものを手に入れてほしいだけです。

導入部分はこれで終了です。MySQL データベース ダンプを作成するためのコンソール コマンドのレビューに進みます。保存されるデータの量で並べ替えることにしました。データベース全体のエクスポートから始まり、個々のテーブルとその結果で終わります。任意のクエリ。

コンソール経由で MySQL データベース ダンプを作成する

初めに少し説明させていただきたいと思います。

データベースダンプは一連の SQL コマンドが含まれるファイルであり、これを起動すると、データベースとテーブルを作成したり、それらに情報を入力したりできます。 ダンプは、MySQL データベースをダウンロードして別のサーバーまたは既存のサーバー内にコピーする場合に必要です。

また、ご存知ない方もいるかもしれませんが、MySQL データベースのバックアップは基本的に、特定の期間に作成されたデータベースのダンプであり、必要に応じてデータベースの構造とデータを復元できます。

データのエクスポート- これは、テキスト エディタまたはグラフィック エディタでさらなる作業を行うために、テーブルからテキスト形式で情報を抽出するだけです。

したがって、これらのアクションのコマンドは若干異なります。

データベース ダンプを作成するために、MySQL には という組み込みユーティリティがあります。 mysqldumpこれは、サーバー コンソールまたは他のシェルの MySQL コマンド ラインの外で使用する必要があります。

したがって、最も単純で一般的なオプション (MySQL コンソールの特定のデータベースからデータをエクスポートして、別のサーバーに転送するか、内部コピーする) では、次のコマンドを実行する必要があります。

Mysqldump -u ユーザー名 -p データベース名 > パスとダンプファイル名

このユーティリティは、SQL コマンドを使用したファイルの形式でのみ MySQL データベース ダンプを作成できるため、ファイルにどの拡張子を選択しても、その内容は同じになります。 また、ファイルを作成できるように、MySQL から情報をエクスポートする前に、ファイルが配置されるディレクトリの書き込み権限を確認することを忘れないでください。

突然サーバー上のすべてのデータベースのダンプを作成する必要がある場合は、次のコマンド オプションを使用します。

Mysqldump -u username -p --all-databases > path_and_dump_file_name

いくつかの特定のデータベースのみをダンプするには、次のパラメータを指定して mysqldump を呼び出す必要があります。

Mysqldump -u ユーザー名 -p --databases データベース名 1、データベース名 2、... > パスとダンプファイル名

その結果、いずれの場合も、含まれるテーブルの構造 (フィールド、そのタイプ、インデックス、キーなど) を作成するためのコマンドと、テーブルにデータを埋めるための操作を含む MySQL データベース ダンプを受け取ることになります。

このオプションは、データベース全体の復元とコピーにのみ適しています。

特定の MySQL テーブルのバックアップを作成し、そのデータを読み取り可能な形式で取得する方法についてさらに詳しく説明します。

MySQL テーブルのダンプとデータのエクスポート

特定の MySQL データベース テーブルのダンプを作成するには、同じユーティリティが必要です。 mysqldump、次のパラメータを使用して呼び出されます。

Mysqldump -u ユーザー名 -p データベース名 テーブル名 1, テーブル名 2, ... > パスとダンプファイル名

mysqldump を呼び出すときに、必要なテーブルをパラメータ値として指定できます。 --テーブル、パラメータを使用する場合 --データベース無視されます:

Mysqldump -u ユーザー名 -p --databases データベース名 1、データベース名 2 --テーブル テーブル名 1、テーブル名 2、... > パスとダンプファイル名

上記の例では、次のエラーが表示されます。

Mysqldump: データベースの選択時にエラー: 1049: 不明なデータベース "database_name1" が発生しました

ご覧のとおり、リスト内の最新のデータベースのみが使用されます。 原則として、この動作は非常に論理的です。 指定されたテーブルがすべてのデータベースに存在するとは限りません。

さて、MySQL データベース テーブルのダンプを受け取りました。 これを使用して、それらを復元したり、構造とともにコピーしたりできます。

しかし、管理者に送信して通常のテキスト エディタまたはスプレッドシート エディタで表示できるように、ファイルに保存されている情報を、できれば読み取り可能な形式で取得する必要がある場合はどうすればよいでしょうか? MySQL にもこのためのツールがあります。

ユーティリティに電話するオプションは、計画の達成に役立ちます mysqlコンソールから特定のパラメータを使用して:

Mysql -u ユーザー名 -p データベース名 -e "SELECT * FROM テーブル名"

このコマンドを使用すると、MySQL コマンド ラインにアクセスせずに、必要なデータベースに対してクエリを実行し、結果をコンソールに出力できます。

データをコンソールに出力せずにファイルに書き込むには、次のようにコマンドを補足する必要があります。

Mysql -u ユーザー名 -p -e "SELECT * FROM テーブル名" > パスとファイル名

これらの構造のおかげで、テーブルのすべてのフィールドに格納されているデータだけでなく、特定のフィールドに格納されているデータも取得できます。 これを行うには、ワイルドカード (*) 記号をカンマで区切って必要な記号に置き換えます。

その結果、出力はヘッダー形式のフィールド名とすべてのレコードのフィールドに関する情報を含む通常のテキスト ファイルになります。 作成時に指定した解像度に関係なく、通常のテキスト エディタで開くことができます。

MySQL データベースからデータを xls または csv 形式でエクスポートして、結果のファイルがスプレッドシート エディタで正しく表示されるようにしたい場合は、その方法については後ほど説明します :)

バックアップの作成とクエリを使用した MySQL データベースからのデータの出力

MySQL データベース (1 つまたは複数、および個々のテーブル) をダンプする方法について説明しました。 ただし、実際には、1 つのテーブルに限定されないデータ セットをエクスポートする必要がある場合があります。 または、テーブルから一部のデータのみを選択する必要があります。

企業プロジェクトの開発者は、マネージャーからあらゆる種類の統計データの提供を求められたときに、特にこの問題に遭遇することがよくあります。 または、テーブルの特定の部分をバックアップしてすぐに復元する必要がある場合。

バックアップには同じユーティリティが必要です mysqldump、次のように呼び出す必要があります。

Mysqldump -u ユーザー名 -p データベース名 テーブル名 --where "lookup" > パスとダンプファイル名

その結果、テーブル全体の構造を作成するための SQL コマンドを含むファイルを受け取ります。テーブルの作成後、ルックアップ クエリを使用して選択された情報がこのテーブルに埋め込まれます。

1 つ以上のテーブルに格納されているデータを取得する必要があるだけの場合は、前のケースでテーブル内のすべてのデータを取得するときに使用したコマンドを、いくつかの点を明確にして変更する必要があります。

Mysql -u ユーザー名 -p -e "SELECT * FROM テーブル名 WHERE ルックアップ" > パスとファイル名

ご理解のとおり、ディレクティブを使用してリクエストで指定されたさまざまな説明に加えて、 どこ、他の SQL 構造を使用できます。 参加する, 連合

あらゆる種類の統計を収集できます:)

次のコマンドを使用して、MySQL コマンド ラインで作業するときに同じアクションを実行することもできます。

SELECT * FROM データベーステーブル WHERE ルックアップ INTO OUTFILE "パスとファイル名";

このコマンドは、サンプリング結果を含むファイルを作成するために特別に設計されています。 さらに、結果はファイルにエクスポートできるだけでなく、変数に書き込むこともでき、出力データはさまざまな方法でフォーマットできます。

上記に該当する場合は、このコマンドを呼び出すためのパラメータとオプションの完全なリストをここで見つけることができます - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

mysqldump についての簡単な説明の締めくくりとして、パラメータのリストを指定してコマンドを呼び出して、MySQL データベースとテーブルの最適化されたダンプを作成し、そこからデータベースと個々のテーブルを復元する場合よりも短時間で復元する変形例を紹介したいと思います。通常の通話:

mysqldump -u ユーザー名 -h ホストまたは IP_MySQL サーバー -p --no-autocommit --opt データベース名 > パスとダンプファイル名;

実験のために、このオプションを使用して、サイズ 143 MB の MySQL データベースをダンプしました。 その後の復元には、特別なパラメーターを指定せずに mysqldump を呼び出して作成したダンプからデータベースを復元した場合は 1 分 3 秒かかりましたが、59 秒かかりました。

これは小さなことだということに同意します。 ただし、これは一定量のデータの場合に限ります。 1GB を超えるダンプを作成するときにこの手法を使用すると、違いはさらに顕著になります。

このような状況が発生した場合は、まず MySQL データベース ダンプをアーカイブすることを忘れないでください。 一番いいのはtar.gzです。 そうすれば、回復にかかる時間はさらに短くなります。

MySQL から Excel および CSV ファイルにデータをエクスポートする

MySQL からこれら 2 つの形式への情報の出力に関する情報を 1 つのブロックに結合したのは無駄ではありませんでした。 これらは非常に似ており、ほぼ同じ方法 (テーブル形式で情報を構造化するため) に使用され、エクスポート用の同じコマンドが呼び出されます。

ご存知のとおり、これらの形式の唯一の大きな違いは、xls および xlsx 拡張子のファイルは Microsoft Office Excel で作成され、Windows でのみ動作するのに対し、csv ファイルはより汎用的であり、多くのエディターで操作が可能であることです。

これは、xls が Microsoft Office Excel 以外の場所で開かないという意味ではありません。 同じ OpenOffice もその逆を裏付けています。

ただし、これを可能にするためには、ソフトウェア製品にこのサポートが存在する必要があります。 csv ファイルはメモ帳などの通常のテキスト エディタでも読み取ることができますが、この形式は完全に読み取ることができません。

まず、SQL クエリの結果は xls または csv にのみエクスポートできるという事実から始めましょう。これについては以前に学習しました。 1 回の操作でデータベース全体を 1 つのファイルに出力することは不可能です。

まず、これは最適ではありません。なぜなら... データベースに大量の情報が保存されている場合、そのようなファイルは開かれない可能性があります。 そして第二に、ファイル内の情報をテーブルとフィールドに分割する方法が明確ではありません。

いいえ、もちろんこれを実行することは可能ですが、1 つのコマンドで実行できる可能性は低く、一般にコンソールでこれを実行する人はいないでしょう。 これらの目的には、特別なソフトウェア、または少なくともスクリプトが必要になると思います。

MySQL データベース全体からコンソールで一度に 1 つまたは複数の xls ファイルに情報をエクスポートする方法を突然知った場合は、それについてコメントに書いてください。 これについて読んで、多くの人にとって役立つと思います。

したがって、MySQL から xls および csv にデータをエクスポートする方法について話している場合、これはユーティリティを使用してサーバー コンソールで直接実行できます。 mysqlまたは、前回の記事で紹介した作品です。

順番に始めましょう。

次のコマンドを使用して、サーバー コンソールで MySQL データベースからデータを csv および xls 形式に直接エクスポートできます。

の上 Linuxシステム:

Mysql -u ユーザー名 -d データベース名 -p -e "SELECT * FROM データベーステーブル;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name。 csv

原則として、どうしても必要な場合は、このコマンドを使用して MySQL データを Excel ファイルにエクスポートできます。 しかし、正直に言うと、私はこれに実際に取り組んだことがなく、最終的に何が起こるかわかりません。 現在 Windows で作業しています。 Linux でこのコマンドを使用する場合は、作業の結果についてコメントに書き込んでください。 この情報は誰にとっても興味深いものになると思います。

の上 ウィンドウズ:

残念ながら、この場合、上記のコマンドを使用して MySQL テーブルから CSV にデータをエクスポートすることはできません。 Linux とは異なり、Windows には、Linux の sed のようなスレッドを操作するためのコンソール コマンドが組み込まれていません。

もちろんインストールすることもできますが、面倒です。 あるいは、次のように使用することもできます CygWin— Windows システム用の Linux コンソール エミュレーター。

すでにインストールされている場合は大丈夫です。 そうしないと、選択した方法を使用して MySQL データベースからデータをエクスポートするのに多大な問題が発生します。

しかし、情報を xls ファイルに抽出するのは 5 コペックほど簡単です :) 次の方法で起動するのは非常に簡単です。私はこれを個人的に試しました。

Mysql -u ユーザー名 -d データベース名 -p -e "SELECT * FROM データベーステーブル;" > パスとファイル名.xls

このファイルは Microsoft Office Excel で何の問題もなく開きました。 唯一のことは、それを開くときに、開かれているファイルの実際の形式が指定された拡張子と異なることを警告するメッセージが画面に表示されたことです。

しかし、アクションを確認すると、ドキュメントは問題なく開きました。すべての情報は、テーブル自体に保存されている形式でセルに分割されました。

わかりませんが、Microsoft Office Excel で特定の操作を実行すると、将来問題が発生する可能性があります。私はそこまで詳しく調べていません。 少なくとも、普通にデータを調べた限りでは、何も異常は見当たりませんでした。

このプログラムまたは他のプログラムで、MySQL からエクスポートされた xls ファイルの使用中に問題が発生した場合は、コメントでお知らせください。

上記の方法を使用すると、原則として MySQL データベースの内容を csv ファイルにエクスポートできます。 ただし、テーブルのさまざまなフィールドのデータが区切り文字なしでまとめて書き込まれるため、通常は csv ファイルを操作するテーブルを操作するさまざまなプログラムでうまく表示されない可能性があります。

ちなみに、OpenOffice は気にしません :) MySQL データベースの内容を xls にエクスポートする方法で取得した情報を自動的に区切ります。 彼がどのようにそれを行うのか分かりませんが、それを使用することをお勧めします:)

さて、同じ Microsoft Office Excel では、表内の 1 つのレコードに対応するすべての情報が区切り文字なしで 1 つのセルに書き込まれて表示されました。 他のテーブルエディタも同じことをすると思います。

したがって、MySQL データベースを csv ファイルにエクスポートする場合は、エディターが理解できる特殊文字で情報を区切って行う必要があります。

そして、徐々に MySQL データを csv および xls にエクスポートする 2 番目の方法、つまり MySQL コマンド ラインを使用する方法に近づいてきました。

したがって、この方法で MySQL データを CSV ファイルにエクスポートするには、次のコマンドが必要です。

SELECT * FROM データベーステーブル INTO OUTFILE "パスとファイル名.csv" フィールドが "," で囲まれている """ 行が "\n" で終了しています;

実行の結果、呼び出し時に指定したパスに CSV ファイルが受信されます。このファイルは、ほとんどの最新のスプレッドシート エディタで正しく開くことができます。 念のため、このコマンドは MySQL データベースに接続した後にのみ実行する必要があることに注意してください。

このコマンドは、MySQL データを xls ファイルにエクスポートして Microsoft Office Excel で正しく表示するのにも最適です。 この場合にのみ区切り文字は必要ありません。 情報をセルに分割するのを妨げます。

SELECT * FROM データベーステーブル INTO OUTFILE "パスとファイル名.xls";

ただし、実際には、すべてが私が説明したほど単純であるわけではありません。 コマンドの実行中に、コンソールに次のエラーが表示され、エクスポートが完了できない場合があります。

エラー 1290 (HY000): MySQL サーバーは --secure-file-priv オプションを使用して実行されているため、このステートメントを実行できません

これは、MySQL サーバーが次のオプションを使用して起動されたことが原因で発生します。 --secure-file-priv。 私個人としては、コンソールで作業するために WAMP OpenServer キットに含まれる MySQL ディストリビューションを使用しているため、この問題が発生しました。これにより、この方法で MySQL サーバーが起動されます。

問題を解決するには 2 つの方法があります。

  • MySQL サーバーの起動パラメータを変更する
  • 最終的な MySQL エクスポート ファイルへのパスを変更します。

最初の方法は私には複雑すぎるように思えました。 OpenServer の設定を詳しく調べる必要がありますが、これはその後の状況をすべて考慮して私が書いたものではありません 🙂 したがって、私は 2 番目の方法を取ることにしました。 同様の問題が発生した場合は、私の後に同じ問題を繰り返してください。

まず、MySQL コマンド ラインに移動し、次のいずれかのコマンドを実行する必要があります。

「secure_file_priv」のような変数を表示します。 SELECT @@GLOBAL.secure_file_priv;

両方を実行した結果が MySQL グローバル変数の値になります。 secure_file_privこれには、MySQL データのエクスポートおよびインポート操作を実行できるディレクトリへのパスが含まれています (将来的には、データ インポートに関する記事へのリンクが追加されます)。

それらの。 コマンドを使用する場合 データを読み込むそして 選択...をOUTFILEにエクスポートおよびインポートされたファイルは、このディレクトリ内にのみ配置できます。

私の場合、この変数は通常次のように設定されていました ヌル、 なぜなら すでに述べたように、私はコンソールで作業するために、OpenServer に含まれるディストリビューションの MySQL ユーティリティを使用しています。 この値は、指定されたコマンドを使用した MySQL データのエクスポートおよびインポート操作が完全に終了したことを示します。

後で判明したように、これは、ボックス化された WAMP サーバーおよび MAMP サーバーを使用する場合によくある状況です。

残念ながら、私の場合、MySQL グローバル変数の値を変更する通常の方法を使用することはできませんでした。

SET 変数名 = 値;

その結果、コンソールには次のエラーのみが表示されました。

エラー 1238 (HY000) 行 1: 変数 "secure_file_priv" は読み取り専用変数です.

その結果、変数の値を変更するには secure_file_privエクスポートおよびインポート操作を開くには、MySQL 構成ファイル mysql.ini に移動する必要がありました。このファイルは MySQL ディストリビューションのルート ディレクトリにあります。MySQL が WAMP/LAMP/ に含まれている場合は別の方法でアクセスできます。 MAMPサーバーの構築。

ちなみに、ファイル交換スプールディレクトリへのパスを変更したい場合も同様の操作が必要です。

私の場合、この変数はコメント形式でのみ構成にすでに存在していました。

Secure-file-priv = "%dprogdir%\\userdata\\temp"

持っていない場合は、セクションに最初から書いてください (少なくとも私にとってはそこにありました)。

コメントを外して、書かれたままの形で使用することにしました。 それらの。 MySQL からデータをエクスポートしてインポートし直すと、ファイルはディレクトリに保存されるようになりました。 c:\openserver\userdata\temp\.

設定を変更した後 (ちなみに、どれでも)、変更を有効にするために、可能であれば、サーバーまたは設定を編集した別のサービスを再起動することを忘れないでください。

念のため、MySQL サーバーを再起動した後、変数を再度表示してください。 secure_file_privそしてその値をクリップボードにコピーします。

次に、最初と同じようにコマンドを呼び出し、MySQL データベースからの情報が保存されるファイルの名前の前にのみ、変更する変数に格納されているパスを次の形式で書き込む必要があります。

SELECT * FROM データベーステーブル INTO OUTFILE "secure_file_priv_value\file_name.csv";

この後、私の場合は MySQL からのデータのエクスポートが機能しました。

大事なポイント! Windows で MySQL を使用する場合は、ファイルへのパスを指定するときに「\」を「/」に変更することを忘れないでください。そうしないと、次のようなエラーが発生します。 --secure-file-privまだまだ登場し続けます。

これで、MySQL データベースとそのテーブルをダンプする方法、および MySQL テーブルからさまざまな形式でデータを出力する方法に関する記事は終わりです。 コメントにレビューを書いて、実際に最も頻繁に使用するスクリプト オプションをみんなと共有してください。

記事が気に入った場合は、記事をソーシャル ネットワークに再投稿するか、以下のフォームを使用して著者に感謝の意を表し、基本的なホスティング料金を支払うことができます。

皆さん頑張ってください、またお会いしましょう! 🙂

追伸: ウェブサイトが必要な場合、または既存のウェブサイトに変更を加える必要があるが、時間や希望がない場合は、私がサービスを提供します。

5年以上の経験プロフェッショナルなウェブサイト開発。 と連携 PHP

同僚の皆さん、こんにちは:)

今日は引き続き、コンソールと MySQL コマンド ラインでの MySQL の操作について紹介します。

コンソールを介して MySQL データの基本的な操作を実行する方法と、MySQL データベースをバックアップし、そこに保存されている情報をエクスポートする方法については、すでに記事を書いています。

この話の論理的な続きは、MySQL データベースのインポート操作を使用したデータベースとそこに保存されている情報の復元です。 そして重要なことですが、私たちは今後もすべての真の開発者のツール、つまりコンソールを使用してこれを実行していきます。

phpMyAdmin 経由でデータベースをインポートする手順が必要な場合は、に関する記事を参照してください。 特に今日の内容はコンソールを介して MySQL データベースをインポートすることだけに専念するため、今回の記事ではこれについて再度説明するつもりはありません。

ただし、方法やツールのレビューを始める前に、MySQL データベースのインポートとは何なのか、どのようなものなのか、そしてそれを行う最善の方法について少し説明しましょう。

MySQL データベースのインポート: 何を、そしてなぜ?

MySQL データベースのインポートは、データベースに情報を入力する操作です。 この場合、データ ソースはダンプ ファイル、つまりエクスポート操作中に自動的に作成される別のデータベースのスナップショット、または特別に準備された SQL スクリプトです。

MySQL データベースのインポートとエクスポートには、データベースに保存される情報が 2 種類あります。

  1. データベースの構造、そのテーブル、およびそこに格納されているデータ (一般にデータベース ダンプと呼ばれます)。
  2. テーブルに保存されているか、または次の方法を使用して収集された単純なデータ 選択するリクエスト。

この記事では両方のオプションについて説明します。

すでに述べたように、ダンプから MySQL データベースの構造と保存されているすべての情報を復元するには、データベース ダンプ ファイルが必要です。これは任意の拡張子が付いたテキスト ファイルです (サイズを削減するためにアーカイブに事前にパックすることができます)。データベース自体とテーブルを作成し、それらに情報を入力するための SQL コマンドが含まれています。

したがって、ダンプから MySQL データベースを復元するには、ファイルに含まれているコマンドを実行する必要があります。

通常のデータ回復では、このような複雑な作業は必要ありません。 使用可能なテスト ファイルがあれば十分です。その情報はデータベース テーブルと同じ方法で構造化されます。情報を含む列の数はテーブル レコードの属性の数に対応します。

これらの目的には、データを分割する通常の txt ファイル、または特別なスプレッドシート エディタ (Microsoft Office Excel、OpenOffice など) で作成され、xls、csv、odt などの優れた拡張子が付いたファイルが適しています。

これらの形式はさらに望ましいものです。 データ区切り文字は作成時に編集者が自動的に付加するため、通常のテキストファイルのように区切り文字を別途入力する必要はありません。

MySQL へのデータの追加: ツール

MySQL データベースをインポートするツールに関しては、現在 3 つあると言えます。

(あらゆる種類のシェルとアドオンを使用するという観点から) 最低レベルから最高レベルまで、それらをリストします。

  1. サーバーコンソールとMySQLコマンドライン。
  2. 言語ツールを使用して MySQL にデータを記録できるようにするプログラミング言語で書かれたスクリプト。
  3. データベースを操作するための視覚的なインターフェイスを提供する既製のプログラム (同じ phpMyAdmin、MySQL WorkBench、MySQL Manager など)。

ツールの順序については誰にとっても疑問は生じないと思います。 プログラミング言語ツールは、原則として、MySQL コンソール コマンドに基づいて動作し、プログラムはスクリプトに基づいて動作するか、コマンド ラインから MySQL と直接動作します。

いずれにせよ、コンソールはすべての最前線にあり、残りのツールは実際にはそのエミュレータです。

したがって、MySQL にデータをインポートするときにコンソールを使用すると、Web サーバー上のプログラミング言語の設定やプログラム自体によって設定されたさまざまな種類の制限を回避できます (ちなみに、常に変更できるわけではありません)。

これにより、コンソールから MySQL データベースをより速くロードできるだけでなく、原理的にはこの操作が可能になります。 スクリプトとプログラムは、スクリプトの最大実行時間に達するとインポートが中断されたり、ダウンロードされたファイルのサイズが原因でインポートがまったく開始されなくなる傾向があります。

phpMyAdmin 経由で大規模なダンプを MySQL データベースにアップロードしようとしたことのある人なら、私が何を言っているのか理解できると思います。

多くの場合、これらの制限は、MySQL データベースをインポートする際のエラーの原因になりますが、コンソールを使用するときにはエラーが発生することはありません。

もちろん、それらは一定ではなく、変更することができますが、これはさらに頭の痛い問題であり、一般のユーザーにとっては解決できない可能性があります。

コンソール経由で MySQL データベース (その構造と個々のデータの両方) をインポートする意欲が湧いていただければ幸いです。

この前向きな考えに基づいて、待望の実践に移り、コンソールからデータベースにデータを転送するためのメソッドとコマンドを見ていきます。

コンソールを介してダンプから MySQL データベースを復元するにはどうすればよいですか?

したがって、コンソールから MySQL ダンプをデプロイするには、次の 2 つの方法があります。

  1. MySQL コマンドラインのコマンドを使用する。
  2. サーバーコンソール自体で。

順番に始めましょう。

したがって、MySQL データベース ダンプを 経由で既存のストレージにインポートするには、まずそれを起動し、ダンプをアップロードする目的のデータベースを選択する必要があります。

これらのアクションの実装については、上記のリンク先の記事で詳しく説明されているため、説明が必要な場合はそこから参照してください。 2 ラウンド目では重複したくありません。

上記の作業を行った後、MySQL シェルに次のコマンドを入力します。

ソースのパスとダンプファイル名;

残っているのは、ダンプに含まれる操作の進行状況に関するコンソールのメッセージを調べることだけです。

最初に目的のデータベースに切り替えることなく、コンソールで MySQL サーバーに接続した後、次のコマンドを使用してダンプをインポートできます。

Mysql -u ユーザー名 -p データベース名< путь_и_имя_файла_дампа

それだけです。 ファイルが非常に大きい場合は、インポートが完了するまで待つことが重要です。 ダンプの完了は、サーバー コンソールが再び利用可能になった時点で判断できます。

実際のところ、これが以前の方法と比較した場合のこの方法の欠点です。 前者では、インポート中にデータベースで実行される操作を監視できますが、後者では監視できません。

ダンプ ファイルがアーカイブにパックされている場合は、ダウンロード時に同時に解凍する必要があります。

Linux では、これは次のように実行できます。

Gunzip > [アーカイブファイル名.sql.gz] | mysql -u -p

Windows には、コンソールでアーカイブを解凍するための標準ユーティリティがないため、追加でインストールする必要があります。

ご覧のとおり、コンソール経由で MySQL ダンプをインポートするのは非常に簡単な操作であり、1 つのコマンドで実行できます。 したがって、この手順を実行するために開発者である必要はありません。

サーバー コンソールの起動方法が突然わからない場合は、MySQL コマンド ラインに関する記事 (以前に投稿したリンク) でこの情報を見つけることができます。

ちなみに、ここで説明した方法を使用すると、データベース全体ではなく、MySQL テーブルをインポートすることもできます。 この場合、アップロードするダンプには、ダンプを作成し、データを入力する操作が含まれている必要があります。

コンソール内のファイルから MySQL データベースにデータをロードする

コンソールのダンプから MySQL データベースを復元することについて説明しました。 ここで、xls や csv などのファイルから同じ方法でデータを MySQL データベースにインポートする方法を考えてみましょう。

このタスクでも、前のケースと同じ 2 つのツール、MySQL コマンド ラインとサーバー コンソールを使用します。

改めて順番にレビューしていきましょう。

したがって、MySQL コマンドラインでファイルをインポートするには、ファイルを再度実行し、データがロードされるデータベースに移動します。

LOAD DATA INFILE "path_and_name_of_dump_file" INTO TABLE `database_table` 列は「,」で終了し、行は「\n」で終了します。

MySQL サーバーがオプションで起動された場合は、次のことを忘れないでください。 --secure-file-priv(これは、WAMP/MAMP アセンブリに含まれる MySQL ディストリビューションを使用するときによく起こります)、その場合、システム変数を考慮してファイル名を指定する必要があります。 secure_file_priv。

MySQL シェルにアクセスせずに MySQL データベースをサーバー コンソールにインポートするには、ユーティリティが必要です。 mysqlimport、MySQL ディストリビューションに含まれており、その次の呼び出し:

mysqlimport –u ユーザー名 –p データベース名名とインポートファイルへのパス

このユーティリティは SQL コマンドに似ています。 データファイルのロード、コマンドラインのみ。 しかし、なぜその呼び出しのパラメータの中に、ファイルからのデータがロードされるテーブルが含まれていないのかという疑問が生じます。

実際のところ、mysqlimport には単に物理的にこのパラメータがありません。 代わりに、データがロードされるテーブルの名前が、インポートされるファイルの名前に含まれている必要があります。

それらの。 Excel テーブルを MySQL テーブルにインポートする場合 ユーザー、その場合、ファイルは次のように呼ばれるはずです ユーザー.xls.

すでに述べたように、インポートされたファイルの拡張子は何でも構いません。

mysqlimport を使用すると、複数の xls または csv ファイルを一度に MySQL にロードすることもできます。 データが宛先に到達するには、前の例のように、ファイルとデータベース テーブルの名前も一致する必要があります。

インポートされたファイル内の列が突然、データベース テーブルの列と同じ順序でなくなった場合、その順序を明確にするために、次の形式で —columns オプションを使用する必要があります。

Mysqlimport –u ユーザー名 –p データベース名 --columns 列 1、列 2、... インポート ファイルの名前とパス

当然のことながら、私の例では、mysqlimport パラメータの完全なリストを考慮しませんでした。 それらの中には非常に特殊なものもあり、実際にはほとんど使用されません。

それらについて詳しく知りたい場合は、その完全なリストをここで入手できます - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

ダンプから MySQL データベースにデータをロードする機能

大規模な MySQL データベースのインポート プロセスを高速化したい場合は、mysqldump コマンドの特別なオプションを使用してデータベース ダンプを作成する必要があります。これについては、MySQL データベースのエクスポートに関する以前の記事で説明しました。リンク先は次のとおりです。先ほど本文に載せました。

残念ながら、MySQL データベースのインポート コマンド自体にはそのようなオプションがありません。

唯一のことは、大規模なデータベース ダンプをロードする際の速度を上げるために、次の機能を使用できることです。

1. ダンプ ファイルを開きます (通常のエディタでは大きなファイルに圧倒されてしまう可能性があるため、できればファイル マネージャーで開きます)。

2. ファイルの先頭に次の行を書き込みます。

SET 外部キーチェック = 0; SET UNIQUE_CHECKS = 0; オートコミット = 0 を設定します。

注記! これらはすでに存在しているか、コメントアウトされている可能性があります (ダンプを作成する多くのプログラムはそれらを自動的に追加できます)。

3. ファイルの最後に、逆のアクションを記述します。

SET 外部キーチェック = 1; セットユニークチェック = 1; 自動コミット = 1 を設定します。

ちなみに、これらのコマンドはインポートプロセスを高速化するだけでなく、インポートを可能にするのにも役立ちます。

実際、MySQL データベースをインポートするためのダンプ ファイルを見たことがあれば、ロードされたテーブルの構造を設定する操作が次のようになっていることに気づいたかもしれません。

`client` が存在する場合はテーブルを削除します。 CREATE TABLE `clients` (...);

それらの。 インポートされるテーブルと同じ名前のテーブルがデータベース内で検索され、見つかった場合は削除され、新しく作成されます。

また、既存のテーブルが外部キーによって突然他のテーブルにリンクされると、読み込み全体が失敗します。

したがって、外部キーなどの存在のチェックを無効にすることは、MySQL データベースのインポート プロセスが正常に完了することを保証する優れた方法でもあります。

CSV を MySQL データベースやその他のファイルにインポートする機能

テキスト ファイルから MySQL データベースにデータをロードする場合は、外部キーを無効にする必要がある場合もあります。

さらに、前の状況とは異なり、この場合はファイルにディレクティブを書き込むことはできません。 その中の SQL コマンドは受け入れられず、実行されません。

MySQL データベースのエクスポートに関する以前の記事で、MySQL コマンド ラインで次の操作を使用してこれを行う方法についてすでに説明しました。

FOREIGN_KEY_CHECKS=0 を設定します。

ただし、そこでは MySQL システム変数については言及しませんでした。 FOREIGN_KEY_CHECKSグローバルとセッション (現在のセッション用) の 2 つの意味があります。

MySQL 変数のグローバル値は、MySQL サーバーが再起動されるまで、MySQL サーバー上のすべてのアクションに対して有効です。 その後、変数の値がリセットされ、デフォルト値が割り当てられます。

MySQL システム変数のセッション値は、MySQL サーバーとのユーザーのセッション中にのみ設定されます。 セッションまたはセッションは、クライアントがサーバーに接続すると開始され、その時点で一意のサーバーが割り当てられます。 接続ID、サーバーから切断されると終了します。これはいつでも発生する可能性があります (タイムアウトなどにより)。

なぜこれを覚えておこうと思ったのでしょうか?

MySQL シェルを使用せずに、サーバー コンソールから MySQL データベースにファイルをロードするコマンドを実行する場合、前述の方法を使用して外部キー チェックを無効にしても機能しないことがわかりました。

コンソールには、テーブル内に外部キーが存在することが原因で発生するエラー メッセージが表示されました。

そして、上記のコマンドがグローバルではなくセッション内の外部キーの存在のチェックを無効にしたという理由で発生しました。これは、示された方法に加えて、次のように実行することもできます。

SET SESSION 変数名 = 変数値; SET @@セッション.変数名 = 変数値; SET @@変数名 = 変数値;

上記のコマンドでは、変数はセッションとして明確にマークされています。

また、MySQL サーバーに直接接続せずに、サーバー コンソールを介して CSV ファイルを MySQL テーブルにロードしていたため、セッション変数値が機能するセッションは作成されませんでした。

最終的に FOREIGN_KEY_CHECKS をグローバルに設定し、インポートは成功しました。

これは、次のいずれかの方法で行うことができます。

SET GLOBAL 変数名 = 変数値; SET @@global.変数名 = 変数値;

値を変更した後、変数の値を確認して、変更が有効になっていることを確認することをお勧めします。 セッション値とグローバル値を同時に表示するには、次のコマンドを使用します。

SELECT @@GLOBAL.foreign_key_checks、@@SESSION.foreign_key_checks;

MySQL データベースのインポートに関する本日の記事はこれで終わりです。 コメントであなたの感想やあなた自身の発展を共有してください。 多くの人があなたの経験に興味を持つと思います。

またね! 🙂

追伸: ウェブサイトが必要な場合、または既存のウェブサイトに変更を加える必要があるが、時間や希望がない場合は、私がサービスを提供します。

5年以上の経験プロフェッショナルなウェブサイト開発。 と連携 PHP, オープンカート,