Mysql匯出檔案及備份操作筆記
透過 SELECT ... INTO OUTFILE 語句 匯出某個表
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| acs |
| auth |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.01 sec)
MariaDB [(none)]> use test
Database changed
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sheet1 |
+----------------+
1 row in set (0.01 sec)
MariaDB [test]> select * from sheet1 into outfile '/tmp/sheet1.txt';
Query OK, 239 rows affected (0.02 sec)
MariaDB [test]> select * from sheet1 into outfile '/tmp/sheet2.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
Query OK, 239 rows affected (0.00 sec)
LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。為了將一個資料庫的資料寫入一個檔案,使用SELECT ... INTO OUTFILE,為了將檔案讀回資料庫,使用LOAD DATA INFILE。
透過 mysqldump 匯出表作為原始資料
如下語句將 test 資料庫的 sheet1 表匯出到 /tmp 目錄下,執行後在 /tmp 目錄下回生成 sheet1.txt 文字檔案:
[root@bogon ~]# mysqldump -u root -p --no-create-info --tab=/tmp test sheet1
Enter password:
透過 mysqldump 匯出某個表定義及資料
[root@bogon ~]# mysqldump -u root -p test sheet1 > /tmp/sheet1dump.txt
Enter password:
[root@bogon ~]#
[root@bogon tmp]# more sheet1dump.txt
-- MySQL dump 10.16 Distrib 10.1.25-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: test
-- ------------------------------------------------------
-- Server version 10.1.25-MariaDB
--
-- Table structure for table `sheet1`
--
DROP TABLE IF EXISTS `sheet1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sheet1` (
`Code` varchar(255) DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Continent` varchar(255) DEFAULT NULL,
…
`Code2` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sheet1`
--
LOCK TABLES `sheet1` WRITE;
/*!40000 ALTER TABLE `sheet1` DISABLE KEYS */;
INSERT INTO `sheet1` VALUES ('ABW','Aruba','North America','Caribbean','193.00','','103000','78.4','828.00','793.00','Aruba','
….
8670.00','Zimbabwe','Republic','Robert G. Mugabe','4068','ZW');
/*!40000 ALTER TABLE `sheet1` ENABLE KEYS */;
UNLOCK TABLES;
-- Dump completed on 2020-03-27 18:04:43
全庫備份:
[root@bogon ~]# mysqldump -u root -p --all-databases > /home/dbbakups/Test_DB_dump20200327.txt
Enter password:
將資料表及資料庫複製至其他主機
如果你需要將資料複製至其他的 MySQL 伺服器上, 你可以在 mysqldump 命令中指定資料庫名及資料表。
在源主機上執行以下命令,將資料備份至 dump.txt 檔案中:
$ mysqldump -u root -p database_name table_name > dump.txt
password *****
[root@bogon ~]# mysqldump -u root -p test sheet1 > /tmp/sheet1dump.txt
如果完整備份資料庫,則無需使用特定的表名稱。
[root@bogon ~]# mysqldump -u root -p acs > /tmp/acsdump.txt
[root@bogon tmp]# ls -alh
-rw-r--r--. 1 root root 5.2M Mar 27 18:54 acsdump.txt
如果你需要將備份的資料庫匯入到MySQL伺服器中,可以使用以下命令,使用以下命令你需要確認資料庫已經建立:
建立資料庫 語法 :
create database db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # utf8編碼
create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; # gbk編碼
使用資料庫: use db1;
在另一個本地PC上建立名稱為acstest的資料庫:
mysql> create database acstest DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.09 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| acstest |
| information_schema |
| kuqlan |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
8 rows in set (0.00 sec)
mysql> exit
Bye
C:\Users\yspmm>mysql -u root -p acstest < D:\acsdump.txt
Enter password: ********
匯入語法:
$ mysql -u root -p database_name < dump.txt
password *****
你也可以使用以下命令將匯出的資料直接匯入到遠端的伺服器上,但請確保兩臺伺服器是相通的,是可以相互訪問的:
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
將指定主機的資料庫複製到本地
如果你需要將遠端伺服器的資料複製到本地,你也可以在 mysqldump 命令中指定遠端伺服器的IP、埠及資料庫名。
在源主機上執行以下命令,將資料備份到 dump.txt 檔案中:
請確保兩臺伺服器是相通的:
mysqldump
-
h other
-
host
.
com
-
P port
-
u root
-
p database_name
>
dump
.
txt
password
****
一般在匯出檔案目錄沒有在 mysql 引數檔案 my .ini 或 my .cnf 裡進行配置會出現如下錯誤:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
出現這個錯誤是因為沒有給資料庫指定寫出檔案的路徑或者寫出的路徑有問題。錯誤解決方法:
首先使用下面的命令 show variables like '%secure%'; 檢視資料庫的儲存路徑。如果查出的 secure_file_priv 是 null 的時候就證明在 my.ini 檔案裡面沒有配置寫出路徑。
這時候就可以在 mysql.ini 檔案的 [mysqld] 程式碼下增加 secure_file_priv= D :/ tmp 再重啟 mysql 就可以了。
參考文章:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-2683050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL匯入匯出檔案檔案MySql
- [Mysql]——備份、還原、表的匯入匯出MySql
- mysql 匯入匯出 sql檔案MySql
- MySQL匯入匯出平面檔案MySql
- C++ 中輸入輸出流及檔案流操作筆記C++筆記
- SQL Server資料庫 bcp匯出備份檔案應用SQLServer資料庫
- MYSQL資料匯出備份、匯入的幾種方式MySql
- MySQL 8:備份&匯入【備忘】MySql
- Oracle expdp/impdp匯出匯入命令及資料庫備份Oracle資料庫
- Mysql備份系列(2)--mysqldump備份(全量+增量)方案操作記錄MySql
- Mysql備份系列(3)--innobackupex備份mysql大資料(全量+增量)操作記錄MySql大資料
- ubuntu 下mysql匯入和匯出.sql檔案UbuntuMySql
- MySQL 匯出匯入二進位制檔案MySql
- 冷備份之一查詢引數檔案及備份引數檔案
- Linux下對檔案進行加密備份的操作記錄Linux加密
- 【Mysql】匯出資料到excel檔案中MySqlExcel
- 備份之控制檔案備份
- DM7使用DMRMAN工具執行備份集對映檔案匯出
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- 初探MySQL資料備份及備份原理MySql
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- 【Mysql】備份一個mysql my.cnf配置檔案MySql
- rman備份筆記筆記
- python file 檔案操作筆記Python筆記
- mysql學習筆記之備份與恢復MySql筆記
- mysql匯出select結果到檔案MySql
- Mysql備份系列(4)--lvm-snapshot備份mysql資料(全量+增量)操作記錄MySqlLVM
- CSDN部落格匯出備份工具
- Mongodb的備份恢復與匯出匯入MongoDB
- 備份控制檔案
- sql檔案備份SQL
- oracle 控制檔案及引數檔案何時自動備份Oracle
- Oracle資料庫備份與恢復之匯出/匯入(EXP/IMP)、熱備份和冷備份Oracle資料庫
- MySQL匯入SQL檔案及常用命令MySql
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- Linux mysql 備份和匯入命令LinuxMySql
- mysql資料庫備份匯入命令MySql資料庫
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL