使用load匯出mysql表資料
當我們需要備份資料庫時,需要匯出資料,我們一般是使用mysqldump命令來進行資料的匯出,下面我們先來試驗一下,
首先建立一張表
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
建立t1表,只有一個欄位,往資料表中插入幾行資料
insert into t1 values(1),(2),(3);
然後開始備份
可以看到已經匯出的資料
下面這樣我們就備份完畢了,我們可以檢視一下test.sql
--
-- Table structure for table `t1`
--
DROP TABLE IF EXISTS `t1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t1`
--
LOCK TABLES `t1` WRITE;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
INSERT INTO `t1` VALUES (1),(2),(3);
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET
這只是一部分,我們可以看到裡面有一大堆表結構的語句和表建立的語句,當我們的資料量非常大的時候,匯出的速度就可想而知,於是我們就需要在匯出的時候避開這些語句,這裡就要用到load的infile和outfile來匯入匯出資料
我們先來看下outfile的語法
Syntax:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]
下面舉個例子
select * from t1 into outfile "/tmp/test.sql"
這樣就可以把t1表的所有列都匯出來,當然,也可以只匯出某一列的資料
這是匯出,下面看下匯入
匯入要用到我們的load data來實現,看下語法
Syntax:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]
同樣的一個例子來說明
load data infile "/tmp/test.sql" into table t1
或者匯入到某一列或幾列中
load data infile "/tmp/test.sql" into table t1(id)
下面進行一下實際操作,在t1表中插入1000萬行資料
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 10485760 |
+----------+
1 row in set (0.00 sec)
下面來匯出資料
mysql> select * from t1 into outfile "/tmp/outfile.sql";
Query OK, 10485760 rows affected (2.43 sec)
發現匯出的速度非常快,1000萬行資料只需要2秒多
下面看一下outfile.sql中的資料是什麼樣子的
我們發現,檔案中只有資料,而不存在表的結構和其他不相干的語句,這樣就大大減少了匯出資料的量
下面來匯入資料,這裡需要注意的是,有outfile匯出的資料不包含表結構,所以,我們不能夠刪除表或者資料庫來進行操作
下面我們清空一下t1表,進行一下操作
mysql> truncate t1;
Query OK, 0 rows affected (0.12 sec)
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
下面使用load data infile來匯入
mysql> load data infile "/tmp/outfile.sql" into table t1;
Query OK, 10485760 rows affected (12.46 sec)
Records: 10485760 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 10485760 |
+----------+
1 row in set (0.00 sec)
發現匯入的速度也是不慢的
下面為了對比一下mysqldump的匯出,來用mysqldump進行一下操作
對比一下outfile,mysqldump匯出花費了大約12秒,大概是outfile的5倍左右
下面看一下這兩個檔案的大小
可以看到mysqldump匯出的資料是outfile的2倍,這也就說明了outfile的優勢所在。
因此,當有海量資料時,使用outfile和load data infile的速度會更快,消耗的資源更少。
相關推薦
使用load匯出mysql表資料
當我們需要備份資料庫時,需要匯出資料,我們一般是使用mysqldump命令來進行資料的匯出,下面我們先來試驗一下, 首先建立一張表 CREATE TABLE `t1` ( `id` int(11) DEFAULT NULL ) ENGINE=MyISAM DE
mysql 表資料匯入和匯出
一、匯出資料庫用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑): 1、匯出資料和表結構: mysqldump -u使用者名稱 -p密碼 資料庫名 > 資料庫名.sql #/usr/local/mysql/bin/ mysqldump -uro
根據MySQL表資料匯出INSERT INTO語句的方法
因專案中有需要需根據MySQL表資料生成INSERT INTO語句,在網上找了些現成的程式碼,原作者是誰就不知道了,但是發現有BUG,不能適用,遂對他人程式碼進行了修改。修改後能較好的匯出INSERT INTO語句。程式碼如下: package dwz.interactio
mysql 表資料操作
INSERT INTO USER VALUES(10,'root','root','[email protected]'); INSERT INTO USER(username,password,email) VALUES('admin','123','[email pr
plsql 工具怎樣匯出 oracle 表資料
一、雙擊 plsql 工具,輸入登陸使用者、登陸密碼以及登陸資料庫名稱,如下圖: 二、選單 Tools --> Export Tables...,如下圖: 三、進入匯出介面後,可以選擇單個表,進行單個表資料匯出,也可以選擇多個數據表,進行
navicat匯出sqlserver表資料字典
use ZFine go SELECT 表名=case when a.colorder=1 then d.name else '' end, 表說明=case when a.colorder=1 then isnull(f.value,'') else '' end, 欄位序號=a
geoserver釋出mysql表資料
1.環境部署 Geoserver中並不自帶mysql資料釋出功能,需要下載對應外掛。 將其放入geoserver的lib中,釋出,檢視新增資料來源會出現mysql資料來源: 2.Mysql資料釋出 2.1配置資料來源 2.2釋出圖層 2.2.1原始表釋出 需要有geometry型別的欄位。
基於C#語言MVC框架NPOI控制元件匯出Excel表資料
控制元件bin檔案下載地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "dcxx"; } <script type="text/javascript"
利用Flume將MySQL表資料準實時抽取到HDFS、MySQL、Kafka
軟體版本號 jdk1.8、apache-flume-1.6.0-bin、kafka_2.8.0-0.8.0、zookeeper-3.4.5叢集環境安裝請先測試; 參考以下作者資訊,特此感謝;http://blog.csdn.net/wzy0623/article/detail
MySQL表資料的增刪改查
mysql入門(三) 查詢: 1)、查詢所有行 命令: select <欄位1,欄位2,...> from < 表名 > where < 表示式 > 例如:查看錶MyClass 中所有資料 mysql> sele
匯出hive表資料的5種方法
下面介紹一下hive 匯出的幾種方式 本地檔案直接匯出 insert overwrite local directory '/data/hive/export/student_info' select * from default.student 修改分
使用Flume將MySQL表資料實時抽取到hadoop
一、為什麼要用到Flume 在以前搭建HAWQ資料倉庫實驗環境時,我使用Sqoop抽取從MySQL資料庫增量抽取資料到HDFS,然後用HAWQ的外部表進行訪問。這種方式只需要很少量的配置即可完成資料抽取任務,但缺點同樣明顯,那就是實時性。Sqoop使用MapReduce
Windows匯出mysql表結構到word文件
推薦一個實用的工具DBExportDoc V1.0 For MySQL,直接使用其中的Word文件 首先需要安裝mysql-connector-odbc,安裝完成後,在控制面板\系統和安全\管理工具\資料來源(ODBC)中配置資料庫資訊 然後根據文件提示一步步操作即可,如果匯出來的是中文亂碼
利用Flume將MySQL表資料準實時抽取到HDFS
一、為什麼要用到Flume 在以前搭建HAWQ資料倉庫實驗環境時,我使用Sqoop抽取從MySQL資料庫增量抽取資料到HDFS,然後用HAWQ的外部表進行訪問。這種方式只需要很少量的配置即可完成資料抽取任務,但缺點同樣明顯,那就是實時性。Sqoop使用MapRe
db2匯入匯出單表資料 db2備份恢復
db2look –d dbname –e –o db.sql –i username –w passworddb2 -tf db.sql 單表匯出db2move web export -tn yc_news -u db2user -p psw (db2move cqycnw
mysql表資料以本地檔案方式匯入Hive
1、mysql生成資料 1)建立資料庫和資料表,指令碼如下: SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @[email protected]@FOREIGN_KEY_CHECKS
Flume將MySQL表資料存入到HDFS
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
Flume將MySQL表資料存入到HBase
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
java匯出mysql資料表的結構生成word文件
使用sql查詢表的結構是比較簡單,其實這裡難就是難在匯出結構到word文件中。。。,使用poi-tl程式碼也簡單 一、首先jdbc工具類,這個不多說了 public class SqlUtils { private static String url = "jdbc:mysql://lo
mysql匯入資料load data infile用法(將txt檔案中的資料匯入表中)
我們常常匯入資料!mysql有一個高效匯入方法,那就是load data infile 下面來看案例說明 基本語法: load data [low_priority] [local] infile 'file_name txt' [replace | ignor