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 8:備份&匯入【備忘】MySql
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- python file 檔案操作筆記Python筆記
- DM7使用DMRMAN工具執行備份集對映檔案匯出
- 初探MySQL資料備份及備份原理MySql
- Linux mysql 備份和匯入命令LinuxMySql
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- Linux 學習筆記--目錄結構及檔案基本操作Linux筆記
- mysql學習筆記之備份與恢復MySql筆記
- sql檔案備份SQL
- oracle 控制檔案及引數檔案何時自動備份Oracle
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- Mongodb的備份恢復與匯出匯入MongoDB
- linux 下MySQL命令列匯出csv檔案格式LinuxMySql命令列
- 網站搬家時匯入SQL Server備份檔案失敗網站SQLServer
- innobackupex備份mysql大資料(全量+增量)操作記錄MySql大資料
- MySQL備份與恢復操作解析MySql
- 【筆記】使用 PDB 符號檔案匯出 Windows 核心資料結構筆記符號Windows資料結構
- Mysql中備份資料檔案中/*!*/的含義MySql
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- 記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份
- Mysql匯入本地檔案MySql
- Mysql匯入csv檔案MySql
- Networker備份windows檔案Windows
- 如何備份及恢復Linux檔案許可權Linux
- ManagerDB 備份檔案管理與異地備份
- Java中CMD命令來備份mysql資料庫備份檔案出來為0位元組問題JavaMySql資料庫
- layui 表格操作匯入檔案UI
- (十一)Electron 匯入匯出檔案
- Python學習筆記|Python之檔案操作Python筆記
- python筆記-資料型別&檔案操作Python筆記資料型別
- MySQL主從配置及mysqldump備份MySql
- docker 中 MySQL 備份及恢復DockerMySql
- 容災備份 | 看我使用Powershell操作FTP進行資料檔案自動上傳備份FTP
- java匯出CSV檔案Java
- js 匯出檔案流JS