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

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
















コメント

このブログの人気の投稿

Implementation of Robbins monro

Robbins monro の実装 sorry, this page is Japanese only.   今回はRobbins monro の実装をしてみました。 Robbins monroは確率勾配降下法の学習率を入りテーション回数の逆数で割っていくものです。 使っているprogram言語はpython 3です。osはwindowsです。(macほしい...) アルゴリズム 確率勾配降下方とは目的関数の最適解を求めるアルゴリズムです。目的関数をf(X)とすると、手順は以下のようになっています。 初期学習率$n_0$を決めます。訓練データDを用意します。この訓練データは複数の初期値の集まりです。 訓練データから一つ初期値をランダムに取り出し、これを$x_0$とし、最初の予測値とします。 次の式に現在の予測値$x_0$を代入し、新たな予測値$x_{n+1}$を得ます。$$x_{n+1} = x_{n} - \frac{n_0}{n} grad f(X_n)$$ 収束して入れば4へ、収束していなければ2で得られた値$x{n+1}$を新たに$x_n$としてもう一度2を行う。 訓練データを一周していなければ2へ、一周していれば各初期値から得られた解の中から目的関数を最も小さくするものを選ぶ。   実装例 以下の目的関数を最小化させてみましょう。 $$f(x,y) = (x-2)^2 + (y-3)^2 $$ コマンドラインでpythonを実行していきます。 予想通り、(2,3)という解を導き出してくれました。目的関数が簡単だったので、初期値をどの値でとってもばっちり正解にたどり着いてくれました。 CODE 以下にRobbins monroの関数だけ置いておきます。 こちら にすべてのコードを載せています。 def Robbins_monro(function,grad,number_variable_gradient): init_learning_rate = 1.5 stepsize = 1000 init_value = np.array([range(-1000,1020,20) for i in range(number_v...

MAP estimation

Introduction 日本語 ver Today, I will explain MAP estimation(maximum a posteriori estimation). MAP estimation is used Bayes' thorem. If sample data is few, we can not belive value by Maximum likelihood estimation. Then, MAP estimation is enable to include our sense.  Overveiw Bayes' theorem MAP estimation Conjugate distribution Bayes' theorem  Bayes' theorem is $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ $P(A|B)$ is Probability when B occur. Please go on  http://takutori.blogspot.com/2018/04/bayes-theorem.html to know detail of Bayes' theorem. Map estimation Map estimation is used Bayes' theorem. Map estimation estimate parameter of population by maximuzing posterior probability. Now, suppoce we get data $x_1,x_2,...,x_n$ from population which have parameter $\theta$. Then, we want to $P(\theta|x_1,x_2,...,x_n)$. Here, we use Bayes' theorem. $$P(\theta|x_1,x_2,...,x_n) = \frac{P(x_1,x_2,...,x_n | \theta ) P(\theta)}{P(x_1,x_2,...,x_n)}...

dijkstra method

Introduction 日本語 ver Today, I will write about the dijkstra method. This method is algorithm which find the shortest distance. The map is expressed by graph. If you never see  this page , look at its page. This page explain the heap structure and definition of graph. The dijkstra method used heap structure, Because heap structure reduce the amout of calculation of dijkstra method. I use  this slide  to explain dijkstra. Overview Algorithm Implementation Algorithm This algorithm is  Decide start node, and this node named A. Allocate $d=\infty$ for each node, but d=0 for start node. Adjacent node of A named adj_list.  For adj in adj_list:  If d of adj > d of A + weight to adj -> d = A + weight to adj. Remove A from graph network. Find node which have the smallest d and it named A, and if network have node, back to 4. I explain this algorithm by drawing.  I explain algorithm by using this graph.  Fis...