スキップしてメイン コンテンツに移動

secure_file_priv

Introduction
sorry, this page is Japanese only. 
最近SQLを勉強し始めたので自分のメモ代わりに得た知識を書こうと思います。
OSはwindowsでMYSQL server 5.7を使っています。


LOAD DATA INFILE
CSVファイルをLOAD DATA INFILEで取り込おうとしたらエラーが出ました。エラーメッセージではsecure_file_privがどうのこうの......
ではまずsecure_file_privとはなんなのか確認していきます。

secure_file_priv
secure_file_privはデフォルトで設定される項目の一つです。
secure_file_privがデフォルトで設定されているときは、その設定されているディレクトリにあるファイルしか読み取れません。
secure_file_privの値の確認は

 mysql> SELECT @@global.secure_file_priv

で確認できます。

windowsの場合はProgramData/MySQL server 5.7/uploadsが指定されているようです。

CSVファイルのIMPORT
では実際にuploadsの中にあるcsv fileをimportするcodeは以下です。取り込みたいファイルをselect@@global.secure_file_privで得られたディレクトリに置いておくのを忘れないでください。

C:/ProgramData/MySQL/MySQL server 5.7/Uploads/に入っているfile.csvをdbというデータベースのtabというtableにimportします。

 
DATA LOAD INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/
file.csv' INTO TABLE db.table


selec @@global.secure_file_privで指定されているディレクトリ以外からファイルを取り込む方法は以下に記しておきます。

secure_file_privの変更
secure_file_privを変更したい、もしくはどのディレクトリからもcsvファイルを取り込みたいときは以下のようなことをします。

  1. C:/ProgramData/MySQL/MySQL server 5.7 のmy.iniというファイルを開く
  2. 125行目くらいにあるsecure_file_priv="C:/ProgramData/MySQL/MySQL server 5.7/Uploads/"の行を見つけます。
  3. secure_file_priv="C:/ProgramData/MySQL/MySQL server 5.7/Uploads/" の" "の間に指定したいディレクトリのpathを書きます。どのディレクトリからもimportしたいときは空白にしてください。

  4. MySQLを再起動します。
  5. SELECT @@global.secure_file_privを実行し、指定したディレクトリのpathが入っていればOKです。


ProgramdDataの場所がわからない場合は以下を参考にしてください。

ProgramDataの場所
uploadsにファイルを入れなければいけないのは分かったが、そもそもProgramDataが見つからない。
ProgramDataは隠しファイルになっているのでデフォルトのままでは表示されないことになっています。
ですので、隠しファイルを表示するように設定する必要があります。
ファイルを開くところに行き、

表示 -> 隠しファイル のところチェック!!

これだけです。(^▽^)/



Reference
https://fisproject.jp/2016/03/mysql5-7-import-from-csv/
http://androidlover.net/android-emulator/bluestacks/windows-hidden-programdata-folder-appear.html
















コメント

このブログの人気の投稿

グラフ理論

Introduction sorry, this page is Japanese only. いよいよ私も三回生になり、グラフ理論の授業が始まりました。ということで、グラフ理論の基本的な定義を書いていこうと思います。 最後に説明する隣接行列については実装を行いましたので、以下の記事もよろしければご覧ください。 隣接行列の実装 グラフのイメージ グラフ理論のグラフとは高校数学で習う二次関数などとは違います。 例えば駅などを創造してください。各駅間に線路が通っていますね。このような、駅、線路の集まりのことをグラフといいます。次の絵で確認してもらえるとイメージしやすいかと思います。 このようなものをグラフといいます。グラフは二点間がどうつながっているかだけを保存し、実際の距離や位置関係は保存しません。 このような向きのない(各駅を行き来でき、一方通行ではない)グラフを無向グラフをいいます。反対に向きのある(一方通行しかできない)グラフを有向グラフといいます。 グラフの定義 グラフではある空でない集合E,Vを考えます。Eの要素をedge(辺)、Vの要素をvertex(頂点)といいます。 ここで以下のような写像を考えます。 $$g:E \rightarrow V \times V$$ この時(E,V,g)で定義される空でない空間のことをグラフといいます。 写像で捉えるグラフ 写像gというのは、Eの要素、つまり辺を対応する(始点、終点)というV×Vの集合の要素に送ります。gは写像ですので、写像の定義より、Eのどの要素の始点と終点が対応していることになります。つまり、辺がどこにもつながっていないということはあり得ません。反対にすべてのV×Vの要素がEの要素のどれかに対応しているのであればgは全射になります。 隣接行列 隣接行列とはどのvertexと、どのvertexがつながっているかを行列で表します。例を見るのが理解するのには早いと思うので、例を挙げて説明します。 上のグラフのイメージで出てきたグラフの例を考えましょう。隣接行列は以下のようになります。 $$ \[  adj = \left( \begin{array}{cccccc} 0 &

Entropy

Introduction sorry, this page is Japanese only.   今日はエントロピーについて書こうと思います。これは確率論や統計学で死ぬほど大事なKLダイバージェンスといものを理解するために必要な知識です。 この記事ではエントロピーについてしか書きませんが、今度KLダイバージェンスについても書こうと思います。 KLダイバージェンスの記事はこちら Entropy 直観的な話 ある事象、「例えば明日大学の講義にX分遅刻する」という事象を考えます。 この事象に対する確率がP(X)が与えられているとしましょう。P(1)は一分遅刻する確率です。この時確率分布P(X)が持つ情報量はどれだけのものかとうことを考えたいとします。 明日の講義はテストを受けるとします。そのテストを受けないと単位を落としてしまします。しかし、テスト前日はすごく寝不足としましょう。遅刻する確率が99パーセントとわかった時、ほとんどどうあがいても遅刻するのであれば単位を落とすのはほぼ確実といえます。 よって前日に徹夜で勉強するよりも、睡眠不足を解消するために寝る方がよっぽど効率的であることがわかります。しかし、遅刻をする確率が50パーセントとわかった時、前日にテスト勉強をすればよいのか、せずに睡眠をとればよいのかわかりません。このように、確率が偏っているほど何が起こるか予測しやすく、対策を立てやすいのです。遅刻する確率が99パーセントとわかる時は遅刻する確率が50パーセントとわかった時に比べて圧倒的に多いはずです。 確率P(X)に対してこの情報量のことをP(X)の 自己エントロピー といいます。 そして、自己エントロピーの期待値のことを 平均エントロピー といいます。 立式 性質 ではこの情報量を数式で表していきましょう。まず自己エントロピーには大事な性質が二つあります。それが 互いに独立な確率変数の自己エントロピーはそれぞれの情報量の和で表される。 自己エントロピーは減少関数である。 の二つです。 自己エントロピーの加法性 互いに独立な確率変数の情報慮はそれぞれの情報量の和でなければいけません。例えば「明日の講義がY分早く終わる」という事象を考えます。この確率変数Yはあなたが何分講義に遅刻しようが

二次元空間の直線

Introduction English ver 今日は、次の定理を証明します。 二次元空間の直線は次のように表せる \[\{x|<x,v> = 0\}\] ただし、vは直線に直行し、ゼロでないベクトルとします。 証明 \[\forall k \in \{x|<x,v> = 0\},\] \[<k,v> = 0\] k と vは二次元空間のベクトルなので、それぞれのベクトルは次のように表せます。 \[k = (k_1,k_2)\] \[v = (v_1,v_2)\] よって \(<k,v>=k_1v_1 + k_2v_2=0\) 方程式を\(k_2\)について解くと \[k_2 = -\frac{v_1}{v_2} k_1\] これはまさしく、傾き\(-\frac{v_1}{v_2}\)の直線です。 Q.E.D