MySQL数据导入导出(一)
今天遇到一個需求,要用自動任務將一張表的數據導入另一張表。具體場景及限制:將數據庫A中表A的數據導入到數據庫B的表B中(增量數據或全量數據兩種方式);體系1和體系2只能分別訪問數據庫A和數據庫B。附圖:
實現方式:體系1將表A的數據導出成文件,存入MongoDB,成功后通知體系2,體系2進行數據導入。
重點來啦:在數據導出和數據導入的時候,有幾下幾種方式,此處具體介紹方法三
方法一:mysqldump,但是mysqldump是在操作系統命令行下運行的,并不滿足這種場景。
方法二:通過sql進行查詢,再通過io寫成文件。此方式不做評價...ps:各種工具的導入導出就算了,有興趣的自行了解
方法三:導出==》SELECT語句 INTO OUTFILE 路徑+目標文件 [option]
導入==》LOAD DATA LOCAL INFILE 路徑+目標文件 INTO TABLE 表名 [option]
其中option參數常用的5個選項:
FIELDS TERMINATED BY '字符串':設置字符串為字段的分割符,默認值為 \t;
FIELDS ENCLOSED BY '字符':設置字符串括上字段的值,默認值為 無任何符號;
FIELDS OPTIONALLY ENCLOSED BY '字符':設置字符串括上char varchar text等字符型字段,默認值為 無任何符號;
LINES STARTING BY '字符串':設置每一行開頭的字符,默認值為 無任何字符;
FIELDS ESCAPED BY '字符':設置轉義字符,默認值為 \;
LINES TERMINATED BY '字符串':設置每行結束符,默認值為 \n;
注意:1.導入的時候數據文件要和導入的表的結構相對應(字段長度、類型、列等等)
2.導出的文件不是sql,不包含表結構,只是純數據文件,且每一條數據占一行
3.路徑問題:有時候隨便選擇一個路徑并不能導出數據文件,會報錯
如:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
解決方式:
a)先通過SHOW VARIABLES LIKE '%secure%' 查詢出默認的路徑,使用默認路徑進行導出,執行結果如下圖
b)修改 mysql 的 my.ini 配置文件中secure_file_priv來進行管理,
i.不允許MySQL進行導入導出
# Secure File Priv.
secure-file-priv = null
ii.只允許MySQL在指定的目錄下進行導入導出操作
# Secure File Priv.
secure-file-priv = /目錄/
iii.不對MySQL的導入導出進行限制(注釋或刪除secure-file-priv配置)
# Secure File Priv.
#secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"
?最后附上eg:
SELECT * FROM pub_parameter INTO OUTFILE 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\test8.sql' SELECT * FROM pub_parameter INTO OUTFILE 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\test5.sql' FIELDS TERMINATED BY '|' ? ? ? ?轉載于:https://www.cnblogs.com/TianSuoMuLong/p/9084912.html
總結
以上是生活随笔為你收集整理的MySQL数据导入导出(一)的全部內容,希望文章能夠幫你解決所遇到的問題。