Mac os 將以逗號分隔的txt文字文件(dns日誌文件)匯入MySQL資料庫
阿新 • • 發佈:2019-01-07
1、mysql -u root -p 登入mysql
2、use dnslog; 進入dnslog資料庫
3、建立表logs:
4、建立完成後,發現id欄位日誌中並沒有需要設定成自增長值,且設定為primary key.如果不設定primary key資料庫可能是read-only
alter table logs DROP COLUMN id; #刪除id欄位
alter table logs ADD COLUMN id INT AUTO_INCREMENT not null, ADD PRIMARY KEY(id); #重新新增
5、匯入檔案,用LOAD DATA INFILE 如果是匯出則是OUTIFILE
LOAD DATA INFILE "/Users/SEU-Li/Desktop/logs.txt" REPLACE INTO TABLE logs FIELDS TERMINATED BY ',' ENCLOSED BY ''; #FIELDS TERMINATED BY ','表示以‘,’分隔欄位
6、上一步匯入txt檔案到mysql時報錯error:1262(01000) Row 3918 was trunated;it contained more data than there were input columns. 是3918這行資料中多了欄位內容,而sql_model中的STRICT_TRANS_TABLES引起報錯。那麼重新設定sql_model的值,去掉STRICT_TRANS_TABLES其他內容不變,即可。 1064報錯是我在輸入是缺少了‘=’號。
7、用的load data匯入,還有第二種方法mysqlimport,mysql報錯 Error 1290這是因為上傳檔案的路徑問題。
8、檢視secure-file-priv的值
secure_file_prive=null -- 限制mysqld 不允許匯入匯出secure_file_priv=/tmp/ -- 限制mysqld的匯入匯出只能發生在/tmp/目錄下secure_file_priv='' -- 不對mysqld 的匯入匯出做限制解決方法:
1.找到 /usr/local/etc/my.cnf ##mac os 的路徑2.在my.cnf中新增下面語句即可,儲存修改secure_file_priv=''