mysql8使用load data將資料檔案入庫

2021-10-25 03:58:46 字數 1508 閱讀 9824

最近在linux系統上,需要將乙個資料檔案入庫,資料檔案以|分隔,\n換行,這裡記錄一下遇到的問題及解決辦法。

首先宣告一下我的資料庫名叫yunwqdb,密碼123456,表名test,資料檔案放在/home/file/下,檔名20201023,資料庫root使用者密碼654321。

使用root使用者登入

mysql -uroot -p654321
首先看一下local_infile模組是否開啟

mysql資料庫公升級到8以上時,load data local可被利用為高危漏洞,所以8以上mysql預設關閉該功能。

開啟模組,並再次檢視是否開啟成功

退出並重新登入資料庫

quit
mysql --local-infile=1 -uroot -p654321
這個時候執行如下語句

load data local infile '/home/file/20201023' into table yunwqdb.test fields terminated by '|' lines terminated by '\n'

;

這個語句從字面上就可以理解是要把』/home/file/20201023』這個檔案,入到yunwqdb資料庫的test表中,並且檔案中以』|『分隔列,』\n』分隔行。

最後附上乙個相對完整的shell指令碼**

mysql --local-infile=1 -uroot -p654321 -e "delete from yunwqdb.test;load data local infile '/home/file/20201023' into table yunwqdb.test fields terminated by '|' lines terminated by '\n';"
就是先刪除表再匯入資料,注意-e " "的用法。

1.一定要開啟local_infile模組,否則報錯error 1148 (42000): the used command is not allowed with this mysql version

2.整個操作是在mysql的root使用者下操作完成的,不要去你自定義的使用者下操作。

3.注意整個load語句中單詞不要寫錯了,檔案位址用』/』。

4.重新登入的時候記得帶上--local-infile=1這個引數。

mysql8問題 mysql8中的問題

only full group by 對於group by聚合操作,如果在 select 中的列,沒有在 group by 現,那麼這個sql是不合法的,因為列不在group by從句中。no auto value on zero 該值影響自增長列的插入。預設設定下,插入0或null代表生成下乙個自...

mysql8建立不了使用者 mysql8建立使用者

假如是mysql8版本的話,使用 grant all privileges to 使用者 localhost identified by 自定義密碼 會報錯,因為要先建立使用者再進行賦權,不能同時進行 建立使用者 create user 使用者名稱 localhost identified by 密...

mysql 8 命令 Mysql8常用命令

1 安裝 移除原來的mysql服務 mysqld remove mysql mysqld install 2 初始化 mysqld initialize 3 啟動 net start mysql 4 登陸 mysql u root p 5 修改密碼 mysqld shared memory skip...