Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  mysqlimport — データインポートプログラム

4.5.5 mysqlimport — データインポートプログラム

mysqlimport クライアントは、LOAD DATA INFILE SQL ステートメントにコマンド行インタフェースを提供します。mysqlimport に対するほとんどのオプションは、LOAD DATA INFILE 構文の句に直接対応しています。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

mysqlimport は次のように起動します。

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

mysqlimport は、コマンド行で指定されたテキストファイルごとに、ファイル名の拡張子があればそれを取り除き、その結果をもとに、ファイル内容をインポートするテーブルの名前を決定します。たとえば、patient.txtpatient.text、および patient と名付けられたファイルはすべて patient と名付けられたテーブルにインポートされます。

mysqlimport は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqlimport] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.9 mysqlimport のオプション

形式 説明 導入
--bind-address 指定されたネットワークインタフェースを使用して MySQL サーバーに接続 5.6.1
--columns このオプションはカンマによって分けられたカラム名のリストを値とします  
--compress クライアントとサーバー間で送信される情報をすべて圧縮  
--debug デバッグのログを書き込み  
--debug-check プログラムの終了時にデバッグ情報を出力  
--debug-info プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力  
--default-auth 使用する認証プラグイン 5.6.2
--default-character-set デフォルト文字セットを指定  
--defaults-extra-file 通常のオプションファイルに加えてオプションファイルを読み取る  
--defaults-file 指名されたオプションファイルのみを読み取る  
--defaults-group-suffix オプショングループのサフィクス値  
--delete テキストファイルをインポートする前にテーブルを空にする  
--fields-enclosed-by このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています  
--fields-escaped-by このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています  
--fields-optionally-enclosed-by このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています  
--fields-terminated-by -- このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています  
--force SQL エラーが発生しても続行  
--help ヘルプメッセージを表示して終了  
--host 指定されたホスト上で MySQL サーバーに接続  
--ignore --replace オプションの説明を参照  
--ignore-lines データファイルの最初の N 行を無視  
--lines-terminated-by このオプションは、LOAD DATA INFILE の対応する句と同じ意味を持っています  
--local クライアントホストから入力ファイルをローカルで読み込む  
--lock-tables テキストファイルを処理する前に、すべてのテーブルを書き込みロック  
--login-path ログインパスオプションを .mylogin.cnf から読み取り 5.6.6
--low-priority テーブルロード時に LOW_PRIORITY を使用。  
--no-defaults オプションファイルを読み取らない  
--password サーバーに接続する際に使用するパスワード  
--pipe Windows で、名前付きパイプを使用してサーバーに接続  
--plugin-dir プラグインがインストールされているディレクトリ 5.6.2
--port 接続に使用する TCP/IP ポート番号  
--print-defaults デフォルトを出力  
--protocol 使用する接続プロトコル  
--replace --replace および --ignore オプションは、一意のキー値に関して既存の行と重複する入力行の処理を制御  
--secure-auth 古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない 5.6.17
--shared-memory-base-name 共有メモリー接続に使用する共有メモリーの名前  
--silent エラーが発生したときのみ出力を生成  
--socket ローカルホストへの接続で、使用する Unix ソケットファイル  
--ssl 接続に SSL を有効化  
--ssl-ca 信頼された SSL CA のリストを含むファイルのパス  
--ssl-capath 信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス  
--ssl-cert PEM 形式の X509 証明書を含むファイルのパス  
--ssl-cipher SSL の暗号化に使用される、許可された暗号のリスト  
--ssl-crl 証明書失効リストを含むファイルのパス 5.6.3
--ssl-crlpath 証明書失効リストファイルを含むディレクトリのパス 5.6.3
--ssl-key PEM 形式の X509 鍵を含むファイルのパス  
--ssl-verify-server-cert サーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証  
--use-threads 並列ファイルロードのスレッド数  
--user サーバーへの接続時に使用する MySQL ユーザー名  
--verbose 冗長モード  
--version バージョン情報を表示して終了  

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --columns=column_list, -c column_list

    このオプションは、カンマで区切られたカラム名のリストを値として取ります。カラム名の順序は、データファイルのカラムとテーブルのカラムを対応付ける方法を示しています。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqlimport は通常 [client] グループおよび [mysqlimport] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqlimport[client_other] グループおよび [mysqlimport_other] グループも読み取ります。

  • --delete, -D

    テキストファイルをインポートする前にテーブルを空にします。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションは LOAD DATA INFILE の対応する句と同じ意味を持っています。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --force, -f

    エラーを無視します。たとえば、テキストファイルのテーブルが存在しない場合、残ったファイルの処理を続行します。--force がない場合は、テーブルが存在しないと mysqlimport は終了します。

  • --host=host_name, -h host_name

    指定されたホスト上の MySQL サーバーにデータをインポートします。デフォルトホストは localhost です。

  • --ignore, -i

    --replace オプションの説明を参照してください。

  • --ignore-lines=N

    データファイルの最初の N 行を無視します。

  • --lines-terminated-by=...

    このオプションは LOAD DATA INFILE の対応する句と同じ意味を持っています。たとえば、復帰改行と改行のペアで終了する行を持つ Windows ファイルをインポートする場合、--lines-terminated-by="\r\n " を使用してください。(コマンドインタプリタのエスケープ処理の規則によってはバックスラッシュを 2 つ使用しなければならない場合があります。)セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --local, -L

    クライアントホストから入力ファイルをローカルで読み取ります。

  • --lock-tables, -l

    テキストファイルを処理する前に、すべてのテーブルを書き込み用にロックします。これにより、すべてのテーブルがサーバー上で同期していることが保証されます。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --low-priority

    テーブルのロード時に LOW_PRIORITY を使用します。これは、テーブルレベルロックのみを使用するストレージエンジン (MyISAMMEMORY、および MERGE) にのみ影響を与えます。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqlimport はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqlimport がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --replace, -r

    --replace オプションおよび --ignore オプションは、既存の行の一意のキー値を重複させるような入力行の処理を制御します。--replace を指定した場合、同じ一意のキー値を持つ既存の行は新しい行で置換されます。--ignore を指定した場合、既存の行の一意のキー値を重複させる入力行はスキップされます。どちらのオプションも指定しなかった場合、重複するキー値が検出されるとエラーが発生し、残りのテキストファイルは無視されます。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --silent, -s

    サイレントモード。エラーが発生したときのみ出力を生成します。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

  • --use-threads=N

    N 個のスレッドを使用して複数のファイルを並行してロードします。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version, -V

    バージョン情報を表示して終了します。

mysqlimport の使用方法を表すサンプルのセッションを次に示します。

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

User Comments
  Posted by Tom Reinertson on May 17, 2002
Keep in mind that your imported text file should
have some value for empty fields. I regularly
build tables using msqlimport to import
tab-delimited text files. My tables contain
integer fields, some of which are
auto_incremented and some are not. MYSQL will
let you represent empty fields as null text
strings, i.e., two tab characters back-to-back,
but I found this increments the warning count.
To solve this problem you must use some value
for empty fields. Since auto_increment fields
use 0 or NULL, one would think, incorrectly,
that you could use 0 or \N to represent a null
value in the import text file. You must 0 for
an auto_increment field. Using \N increments
the warning count. You should use \N for other
numeric fields where you want a null value.
This problem is especially perplexing because of
MySQL's inability to report the text of a
warning. It only reports a warning count.

  Posted by Murali Mohan on November 5, 2002
Before you invoke mysqlimport command with
appropriate options, please check that the 'FILE'
privilege is granted to you.
I wasted time facing the 'Access Denied on
table_name' error
because of the same.
  Posted by Subburaj Palanichamy on January 29, 2003
Mysqlimport - access_to_mysql.txt - Usage - reg.

While converting the data from Microsoft Access database to Mysql, I have used the access_to_mysql.txt tool. In my database, some of the tables were were linked with another microsoft access database for which password has been set. Hence while converting the data, it displayed an error.

To over come this, I opened the database which has the linked table and removed the password set for that database.

Once password is removed, all the tables and data was successfully transferred to C:\temp\mysqldump.txt file.

  Posted by Bli Bla on June 30, 2004
If you get an "access denied" error message,
you may want to try the --local option to mysqlimport.
  Posted by Olivier Müller on November 1, 2004
If your mysqlimport's are not working anymore after the upgrade to mysql 4.0.22, try adding this to your my.cnf:

[mysqlimport]
local = 1

Or add "--local" to your scripts...
  Posted by Philippe Jausions on February 4, 2005
If you are one of the many people trying to import a CSV file into MySQL using mysqlimport under MS-Windows command/DOS prompt, try the following:

mysqlimport --fields-optionally-enclosed-by=""" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE YOUR_TABLE.csv

Between quotes " and backslashes \ it can really give you a hard time finding the proper combination under Windows...

I usually run this command from the folder containing the YOUR_TABLE.csv file.

If you have a header in your .csv file with the name of columns or other "junk" in it, just add a --ignore-lines=X to skip the first X lines (i.e. --ignore-lines=1 to skip 1 line)

If your fields are (optionally) enclosed by double-quotes " and which themselves are doubled inside a value (i.e. a double double-quote "" = 1 double-quote ") then also use --fields-escaped-by=\ (default) and NOT --fields-escaped-by="""

I hope this helps someone,

-Philippe
  Posted by David Pearce on February 9, 2006
If your use the --delete or -D commands AND you are importing multiple files to the same database, the screen messages indicate it clears the table before each import file. If this is true, you will only ever have the data from the last imported file.
  Posted by Tom Wasiluk on October 20, 2006
If you want to skip columns from the import file
try using something like --columns=col1,@x,col2

This will skip the second column, sending it to
the variable @x instead of the destination table.

  Posted by Luke Wendling on November 10, 2006
I was getting a 'field too long' error, but using the --columns flag as below worked for me on Windows.

(for localhost import)
mysqlimport --fields-terminated-by=, --lines-terminated-by="\r\n" DBNAME FILENAME -u USERNAME -p --delete --columns=code,city,state,county

-Luke
http://lukewendling.com
  Posted by mick m on August 26, 2008
I found I had to use the **complete path** to the table file - rather than using "./mytable.txt":

./bin/mysqlimport --columns=title,body --fields-terminated-by="||" kb /usr/local/mysql/s_kb_entry.txt

Otherwise mysqlimport went looking for the table.txt file in the data directory.
  Posted by Manoj Handapangoda on May 14, 2009
This works fine importing csv file to table called tbl_temp_data
import large csv file in to mysql

LOAD DATA LOCAL INFILE C:\test.csv
INTO TABLE tbl_temp_data
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'

If your csv file is less than 1MB and with default mysql configuration this works good, but
if you have csv file size larger than 1MB then it will not import that file.you have to change max packet size varible value (default is 1Mb)

using mysql-administrator GUI you can easily change this
value
In mysql-administrator GUI --> startup varables --> Advanced Networking tab --> data/memory size group box --> Max packet size = ""

.................. have fun with mysql .........

  Posted by A C on June 3, 2009
When I used mysqlimport I found both DOS and Linux were just bombing out with showing me the usage blurb again without any reason. I finally figured out that

--fields-optionally-enclosed-by="""

is incorrect, you need to escape the middle " as shown in this full example:

mysqlimport --fields-optionally-enclosed-by="\"" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE YOUR_TABLE.csv

the above example also assumes you have copied your YOUR_TABLE.csv file into the data directory for YOUR_DATABASE, though I think I read you can specify an absolute path to YOUR_TABLE.csv also.
  Posted by Joe Voirol on March 22, 2010
The --local option is VERY important if you want to import a file from anywhere else other than /var/lib/mysql/table_name directory. If you use --local then you can use the FULL path to the file that you want to import and you do not have to make any changes to the directory permissions for the /var/lib/mysql directory to move files around. It took me a little while to understand what this option meant.

I thought I would share this as it was very frustrating.
  Posted by Bill Swartz on February 2, 2011
Running mysqlimport v3.7 under Win32. Contrary to expected behavior, double quoting the textfile parameter does not cause the tool to accept directory or file names that contain whitespace.
  Posted by Paul Mars on May 23, 2012
Here's how I got mysqlimport to work on Windows:

--fields-optionally-enclosed-by=\"
  Posted by josé ambriz meza on December 27, 2012
En español, explicación de la importación
https://www.youtube.com/watch?v=qh8-iX2wddM

Sign Up Login You must be logged in to post a comment.