📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == INSERT文は、MySQLのテーブルに新しい行を挿入するためのSQL文である。<br> <br> 基本的な構文として、<code>VALUES</code> 形式、<code>SET</code> 形式、<code>VALUES ROW()</code> 形式が提供されており、用途に応じて使い分けることができる。<br> INSERT文は、単一行だけでなく複数行を一度に挿入することも可能であり、パフォーマンスの観点からは複数行挿…」 |
|||
| (同じ利用者による、間の1版が非表示) | |||
| 816行目: | 816行目: | ||
</center> | </center> | ||
<br> | <br> | ||
<code>LOAD DATA LOCAL INFILE</code> を使用するには、サーバ側とクライアント側の両方で <code>local_infile</code> を有効化する必要がある。<br> | |||
<br> | |||
<u>※重要</u><br> | |||
<u>MySQL 8.0.20以降では、<code>local_infile</code> はデフォルトで無効化されている。</u><br> | |||
<u>片方でも無効の場合、ERROR 3950 が発生する。</u><br> | |||
<br> | |||
現在の設定値の確認方法を以下に示す。<br> | |||
<br> | <br> | ||
<syntaxhighlight lang="mysql"> | <syntaxhighlight lang="mysql"> | ||
# local_infile の設定を確認 | # local_infile の設定を確認 | ||
SHOW VARIABLES LIKE 'local_infile'; | SHOW VARIABLES LIKE 'local_infile'; | ||
</syntaxhighlight> | |||
# | <br> | ||
サーバ側の設定方法を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="mysql"> | |||
# 方法1 : 実行時に動的変更 | |||
SET GLOBAL local_infile = 1; | SET GLOBAL local_infile = 1; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="ini"> | ||
< | # 方法2 : my.cnf (永続設定) | ||
<u> | [mysqld] | ||
local_infile=1 | |||
</syntaxhighlight> | |||
<br> | |||
クライアント側の設定方法を以下に示す。<br> | |||
<br> | |||
<syntaxhighlight lang="bash"> | |||
# 方法1: mysqlコマンドラインクライアントのオプション | |||
mysql --local-infile=1 -u user -p database | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="ini"> | |||
# 方法2: my.cnf (永続設定) | |||
[client] | |||
loose-local-infile=1 | |||
</syntaxhighlight> | |||
<br> | |||
MySQL 8.0.21以降では、<code>--load-data-local-dir</code> オプションを使用して、読み込み可能なファイルを特定のディレクトリに制限できる。<br> | |||
<br> | |||
<syntaxhighlight lang="bash"> | |||
# 特定ディレクトリからのみロードを許可 | |||
mysql --local-infile=0 --load-data-local-dir=/my/local/data -u user -p database | |||
</syntaxhighlight> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>LOAD DATA LOCAL INFILE はセキュリティリスクを伴う。</u><br> | |||
<u>悪意のあるサーバーがクライアントの任意のファイルにアクセスする可能性があるため、信頼できる接続先でのみ使用すること。</u><br> | |||
<br> | <br> | ||
===== トランザクションの活用 ===== | ===== トランザクションの活用 ===== | ||
InnoDBテーブルでは、トランザクション内で複数の挿入を実行することで、パフォーマンスを向上できる。<br> | InnoDBテーブルでは、トランザクション内で複数の挿入を実行することで、パフォーマンスを向上できる。<br> | ||