安裝MySQL
sudo apt-get update
sudo apt-get install mysql-server mysql-client
pip install MySQL-python
若出現錯誤:EnvironmentError: mysql_config not found,安裝libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install PyMySQL
基本開啓關閉和登錄退出語法
sudo start mysql
sudo stop mysql
sudo /etc/init.d/mysql restart
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
mysql -u root -p
密碼
show databases;
use basename;
show tables;
exit
python連接mysql
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306,user='root', passwd='123456', db='tianchinew', charset='utf8')
# 創建遊標
cursor = conn.cursor()
createtablesql='create table user(id int primary key auto_increment, user_id int ,item_id int, item_category int,date date ,hour int,view int,favor int,addcar int, buy int)'
# 執行SQL,並返回收影響行數
effect_row = cursor.execute(createtablesql)
effect_row = cursor.execute("LOAD DATA LOCAL INFILE '***.csv' INTO TABLE user FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; ")
# 執行SQL,並返回受影響行數
# effect_row = cursor.execute("update tb7 set pass = '123' where nid = %s", (11,))
# 執行SQL,並返回受影響行數,執行多次
# effect_row = cursor.executemany("insert into tb7(user,pass,licnese)values(%s,%s,%s)", [("u1","u1pass","11111"),("u2","u2pass","22222")])
# 提交,不然無法保存新建或者修改的數據
conn.commit()
# 關閉遊標
cursor.close()
conn.close()
載入文件到mysql
<code class="hljs r">LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]]</code>
例如:
創建表
mysql> create table if not exists user (user_id int ,item_id int ,item_category int ,date date,hour int ,view int,favor int,addcar int,buy int)default charset=utf8;
外部數據導入表中,忽略表頭第一行,忽略第一列用@dummy
mysql>load data local infile '/home/flyvideo/PycharmProjects/ljm/tianchi_newOffline/data/user_df.csv' into table user fields terminated by ',' lines terminated by '\n' ignore 1 lines (@dummy,user_id,item_id,item_category,date,hour,view,favor,addcar,buy);
換行 Unix \n windows \r\n mac \r
遇到問題
- 客戶端沒有導入導出權限
-mysql服務器端的文件讀寫權限是默認開啓的,但是客戶端默認關閉。修改配置文件:
sudo vim /etc/mysql/my.cnf
在mysqld和mysql下分別添加:local-infile=1
- ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it
MySQL默認設置的導入導出權限
該目錄沒有文件導入導出權限
1.如果secure_file_priv 的值爲空的話,這個變量將不起作用;
2.如果secure_file_priv的值爲路徑的話,則mysql服務器將限制導入導出操作功能在這個設置的路徑下使用。這個路徑必須存在。
3.如果secure_file_priv的值設置爲空的話,mysql服務器不能使用導出導入操作功能.但是,在mysql 5.7.6下是可以操作的。
查看該值的設定:
mysql>SHOW VARIABLES LIKE "secure_file_priv";
修改配置文件:
vi /etc/mysql/mysql.conf
在[mysqld]處添加:secure_file_priv=""
重啓一下mysql
- file ’ ’ not found
找不到文件:Ubuntu系統文件路徑沒有讀寫的權限
要解決這個問題會扯到 AppArmor。這是一個保護機制,限制每個程序對特定目錄和文件的訪問權限。也即是說,當前 mysql 程序訪問這個文件的權限被 AppArmor 限制住了
1)打開 /etc/apparmor.d/usr.sbin.mysqld 文件
2)此時能看到很多關於mysql能夠讀寫爲目錄和文件的記錄,文件尾部加入:
#你需要增加讀取權限的目錄
/tmp/ r,
/tmp/* rw,
保存並退出。
3)重新導入 AppArmor 配置,利用 /etc/init.d/apparmor reload 命令
4)重新啓動 mysql,利用 service mysql restart
- 還是找不到
添加local:
load data local infile ''.....