1. 程式人生 > >Mac os 將以逗號分隔的txt文字文件(dns日誌文件)匯入MySQL資料庫

Mac os 將以逗號分隔的txt文字文件(dns日誌文件)匯入MySQL資料庫

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=''
3.重啟mysql伺服器