0

そのため、サーバーのデータベースにリモートでアクセスし、コマンドを実行していくつかのテーブルをすべて個別の csv ファイルにエクスポートしようとしています。したがって、私が持っているのは、次のようなコマンドラインコマンドパラメーターです。

mysql -h 198.xxx.xxx.xxx -u user-p < file.txt

file.txt の内容は次のようになります。

SELECT * FROM log
INTO OUTFILE 'C:\USERS\username\Desktop\log.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'


SELECT * FROM permission_types
INTO OUTFILE 'C:\USERS\username\Desktop\permission_types.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'


SELECT * FROM personal_info_options
INTO OUTFILE 'C:\USERS\username\Desktop\personal_info_options.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

この権利の構文を持っているかどうかはわかりませんが、これが可能である場合でも、例を取得しようとして多くの調査を行っています. 人々は通常、概念を教えてくれますが、テストに必要なコードを提供することは決してないようです。常に次のようなものです。

mysql -h localhost -u user-p < somefile and they don't show you contents 
of a file for example

私はWindows 7を実行しています.WAMPServerをインストールしました.MYSQLバージョン5.5.24があり、コマンドラインからアクセスしています. FILEDS TERMINATED BY、ENCLOSED BY、または LINES TERMINATED BY についてよくわかりません...これらはまったく必要ですか? それは実際に私のローカルマシンに保存されますか? このスクリプトを実行することに神経質になっています。間違いを犯してデータベースを台無しにしたくありません。また、スクリプトファイルは.txtでよろしいですか?

あなたが与えることができるどんな助けも素晴らしいでしょう.

4

1 に答える 1

0
  1. 私がこの権利の構文を持っているかどうか、またはこれが可能である場合でも、例を取得しようとして多くの調査を行っているかどうかはわかりません.

    SELECT各ステートメントをセミコロンで終了する必要があることを除いて、構文は正しいです。テーブルが存在するデータベースも指定する必要があることに注意してください。これを の引数として指定するのが最も簡単ですmysql

    mysql -h 198.xxx.xxx.xxx -u user-p mydb < file.txt

  2. FILEDS TERMINATED BY、ENCLOSED BY、または LINES TERMINATED BY についてよくわかりません...これらはまったく必要ですか?

    SELECT ... INTOSyntaxの下に記載されているように:

    多くのプログラムで使用されるコンマ区切り値 (CSV) 形式でファイルを生成する例を次に示します。

    a、b、a+b を OUTFILE '/tmp/result.txt' に選択します。
      ',' で終了するフィールド オプションで '"' で囲む
      「\n」で終了する行
      FROM test_table;

    LOAD DATASyntaxで説明されているように:

    FIELDSまたは句を指定しない場合LINES、デフォルトは次のように記述した場合と同じになります。

    「\\」で囲まれた「\t」で終了するフィールド
    '' で始まる '\n' で終了する行

    それは説明を続けます:

    逆に、デフォルトでは、SELECT ... INTO OUTFILE出力を書き込むときに次のように動作します。

    • フィールド間にタブを書き込みます。

    • フィールドを引用符で囲まないでください。

    • 「<code>\」を使用して、フィールド値内にあるタブ、改行、または「<code>\」のインスタンスをエスケープします。

    • 行末には改行を書きます。

    LINES TERMINATED BY '\n'がデフォルトであるため、その句を省略できることに注意してください。ただし、FIELDSCSV 出力には句が必要です。

  3. それは実際に私のローカルマシンに保存されますか?

    いいえ。 SELECT ... INTOSyntaxに記載されているとおり:

    の形式は、選択した行をファイルに書き込みます。ファイルはサーバー ホスト上に作成されるため、この構文を使用する権限が必要です。既存のファイルにすることはできません。これにより、データベース テーブルなどのファイルが破壊されるのを防ぐことができます。システム変数は、ファイル名の解釈を制御します。SELECT ... INTO OUTFILE 'file_name'SELECTFILEfile_name/etc/passwdcharacter_set_filesystem

    このSELECT ... INTO OUTFILEステートメントの主な目的は、テーブルをサーバー マシン上のテキスト ファイルにすばやくダンプできるようにすることです。結果のファイルをサーバー ホスト以外のホストに作成する場合はSELECT ... INTO OUTFILE、サーバー ホストのファイル システムに相対するファイルへのパスを書き込む方法がないため、通常は使用できません。

    ただし、MySQL クライアント ソフトウェアがリモート マシンにインストールされている場合は、代わりにクライアント コマンドなどを使用して、クライアント ホストでファイルを生成できます。mysql -e "SELECT ..." > file_name

    サーバーのファイル システム上でネットワーク マップされたパスを使用してリモート ホスト上のファイルの場所にアクセスできる場合は、サーバー ホスト以外の別のホスト上に結果のファイルを作成することもできます。この場合、mysql(または他の MySQL クライアント プログラム) がターゲット ホストに存在する必要はありません。

  4. このスクリプトを実行することに神経質になっています。間違いを犯してデータベースを台無しにしたくありません。

    SELECTステートメントはデータベースからデータを読み取るだけで、その内容を変更しません。したがって、「データベースを台無しにする」ことはできません。

  5. また、スクリプトファイルは.txtでよろしいですか?

    任意の拡張子が機能します。MySQL クライアントもサーバー ソフトウェアもそれを認識しません (オペレーティング システムはファイルを読み取り、その内容をクライアント プログラムに送信し、クライアント プログラムはその内容をサーバーに送信します。オペレーティング システムは、ここでのファイル拡張子に対してあいまいです。 )。

    Windows では、.txt拡張子によってファイルがテキスト エディタ (メモ帳など) に関連付けられ、編集用に簡単に開くことができます。個人的には.sql、ファイルの内容をより正確に記述し、その拡張子を適切なエディターに関連付けたいと思いますが、そのどれも必要ありません.

于 2012-09-02T09:50:34.287 に答える