您好,登錄后才能下訂單哦!
通過 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 就可以了。
參考文章:
https://www.runoob.com/mysql/mysql-database-export.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。