最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL入門--導(dǎo)出和導(dǎo)入數(shù)據(jù)

MySQL導(dǎo)出和導(dǎo)入數(shù)據(jù)

數(shù)據(jù)庫導(dǎo)出可用于將數(shù)據(jù)庫復(fù)制到另一個服務(wù)器??梢詫?shù)據(jù)庫傳輸?shù)皆诹硪慌_主機(jī)上運(yùn)行的服務(wù)器,這是最典型的數(shù)據(jù)導(dǎo)出任務(wù)。也可以將數(shù)據(jù)傳輸?shù)竭\(yùn)行在同一主機(jī)上的不同服務(wù)器。如果正在針對新版本 MySQL 測試服務(wù)器,并且想使用生產(chǎn)服務(wù)器中的實(shí)際數(shù)據(jù),則可以執(zhí)行此操作。還可以將數(shù)據(jù)裝入外部應(yīng)用程序,數(shù)據(jù)導(dǎo)出也可用于將數(shù)據(jù)從一個 RDBMS 傳輸?shù)搅硪粋€ RDBMS 。

在義縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),義縣網(wǎng)站建設(shè)費(fèi)用合理。

完成導(dǎo)出和導(dǎo)入操作的兩種最常用的方法是:

?   使用 SELECT ... INTO OUTFILE 將數(shù)據(jù)導(dǎo)出到文件

?   使用 LOAD DATA INFILE 語句從文件中導(dǎo)入數(shù)據(jù)

1.1.        使用 SELECT...INTO OUTFILE 導(dǎo)出數(shù)據(jù)

可以對 SELECT 語句使用 INTO OUTFILE 子句,將結(jié)果集直接寫入文件。要以這種方式使用 SELECT ,請將 INTO OUTFILE 子句置于 FROM 子句之前。

文件名稱指示輸出文件的位置。 MySQL 會將文件寫入服務(wù)器主機(jī)上的指定路徑。輸出文件具有以下特征:文件將寫入服務(wù)器主機(jī),而不是通過網(wǎng)絡(luò)發(fā)送到客戶機(jī)。文件不能已存在。服務(wù)器將在服務(wù)器主機(jī)上寫入新文件。

要運(yùn)行 SELECT … INTO OUTFILE 語句,必須使用有 FILE 權(quán)限的帳戶連接到服務(wù)器。 MySQL 使用如下權(quán)限創(chuàng)建文件:運(yùn)行 MySQL 進(jìn)程的帳戶將擁有文件、文件對所有用戶可讀。

針對語句所選的每一行,文件中都包含對應(yīng)的一行。默認(rèn)情況下,列值由制表符分隔,而行在換行符處終止。

         語法:

SELECT ... INTO OUTFILE 'file_name'

        [CHARACTER SET charset_name]

        [export_options]

 

export_options:

    [{FIELDS | COLUMNS}

        [TERMINATED BY 'string']

        [[OPTIONALLY] ENCLOSED BY 'char']

        [ESCAPED BY 'char']

    ]

    [LINES

        [STARTING BY 'string']

        [TERMINATED BY 'string']

 

1)        數(shù)據(jù)文件格式說明符

SELECT...INTO OUTFILE 采用默認(rèn)的數(shù)據(jù)文件格式 TSV ,其中列值由制表符分隔,記錄由換行符終止。要使用 SELECT...INTO OUTFILE 寫入使用不同分隔符或終結(jié)符的文件,請使用 FIELDS 和 LINES 子句指定輸出格式。

?   FIELDS 子句指定如何顯示列。

l   TERMINATED BY 指定字段分隔符,默認(rèn)情況下是制表符。

l   ENCLOSED BY 指定如何引住列值。默認(rèn)設(shè)置為不使用引號(即,默認(rèn)值為空字符串)。

l   ESCAPED BY 指明當(dāng)表示換行符或制表符之類的非打印字符時要使用的轉(zhuǎn)義符。默認(rèn)轉(zhuǎn)義符是反斜杠 (\) 字符。

?   LINES TERMINATED BY 子句指定行分隔符,默認(rèn)情況下是換行符。

MySQL 使用反斜杠來轉(zhuǎn)義特殊字符,所以必須將換行符和制表符之類的字符分別表示為“ \n ”和“ \t ”。同樣,要表示反斜杠字符,則必須將其轉(zhuǎn)義為如下所示:“ \\ ”。

 

2)        轉(zhuǎn)義字符

命令行終結(jié)符包括換行符和回車 / 換行符對。默認(rèn)的換行符終結(jié)符常見于 Linux 系統(tǒng),而回車 / 換行符對常見于 Windows 系統(tǒng)。

ESCAPED BY

ESCAPED BY 子句僅控制數(shù)據(jù)文件中值的輸出;它不會更改 MySQL 解釋語句中特殊字符的方式。例如,如果通過寫入 ESCAPED BY '@' 指定數(shù)據(jù)文件轉(zhuǎn)義符為“ @ ”,并不表示您必須使用“ @ ”來轉(zhuǎn)義語句中其他的特殊字符。您必須使用 MySQL 的轉(zhuǎn)義符(反斜杠: \ )來轉(zhuǎn)義語句中的特殊字符,使用 LINES TERMINATED BY '\r\n' (而不是 LINES TERMINATED BY '@r@n' )之類的語法。

轉(zhuǎn)義字符含義

\N NULL

\0 NULL (零)字節(jié)

\b 退格

\n 換行

\r 回車

\s 空格

\t 制表符

\ ′ 單引號

\" 雙引號

\\ 反斜杠

以上所有轉(zhuǎn)義字符可以單獨(dú)使用或者在較長的字符串中使用,但 \N 除外,該序列只有在單獨(dú)出現(xiàn)時才用作 NULL 。

3)        用法示例

mysql> select * into outfile 't1.tsv' from t1;

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

mysql> show variables like 'secure%';

+------------------+-----------------------+

| Variable_name    | Value                 |

+------------------+-----------------------+

| secure_auth      | ON                    |

| secure_file_priv | /var/lib/mysql-files/ |

+------------------+-----------------------+

2 rows in set (0.05 sec)

 

mysql> select * into outfile '/var/lib/mysql-files/t1.tsv' from t1;

Query OK, 7 rows affected (0.01 sec)

注意:如果配置了 secure_file_priv 則必須將導(dǎo)出文件導(dǎo)出到該目錄,否則報錯 ERROR 1290 ;

[root]# cat /var/lib/mysql-files/t1.tsv

100     a

200     a

300     a

mysql> select * into outfile '/var/lib/mysql-files/t1a.tsv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

    -> from t1;

Query OK, 7 rows affected (0.00 sec)

[root]# cat t1a.tsv

100,"a"

200,"a"

300,"a"

 [root]#

 

1.2.        使用 LOAD DATA INFILE 導(dǎo)入數(shù)據(jù)

LOAD DATA INFILE 語句將數(shù)據(jù)文件中的值讀入表。 LOAD DATA INFILE 是 SELECT ... INTO OUTFILE 的逆向操作。如果要導(dǎo)入的數(shù)據(jù)文件包含使用制表符或逗號分隔的表數(shù)據(jù),請使用 LOAD DATA INFILE 命令。此類文件最重要的特征是:

n   列值分隔符

n   行分隔符

n   用于引住值的字符(例如:引號)

n   文件中是否指定了列名

n   導(dǎo)入前是否有標(biāo)頭指示要跳過的表行

n   文件在文件系統(tǒng)中的位置

n   訪問文件是否需要有相應(yīng)權(quán)限

n   列的順序

n   文件和表中的列數(shù)是否匹配

語法:

LOAD DATA

    [LOW_PRIORITY | CONCURRENT] [LOCAL]

    INFILE 'file_name'

    [REPLACE | IGNORE]

    INTO TABLE tbl_name

    [PARTITION (partition_name [, partition_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 | ROWS}]

    [(col_name_or_user_var

        [, col_name_or_user_var] ...)]

    [SET col_name={expr | DEFAULT},

        [, col_name={expr | DEFAULT}] ...]

示例:

LOAD DATA INFILE '/tmp/City.txt' FIELDS TERMINATED BY ',' INTO TABLE City;

 

1)        跳過或轉(zhuǎn)換輸入數(shù)據(jù)

?   忽略數(shù)據(jù)文件行

要忽略數(shù)據(jù)文件的開始部分,可以使用 IGNORE n LINES 子句,其中, n 是一個整數(shù),表示要忽略的輸入行數(shù)。當(dāng)文件以列名行(而不是數(shù)據(jù)值行)開始時,請使用此子句。

mysql> LOAD DATA INFILE '/tmp/City.txt'

-> INTO TABLE City IGNORE 2 LINES;

 

?   忽略或轉(zhuǎn)換列值

您可在列列表和可選的 SET 子句中提供用戶變量,該子句的語法類似于 UPDATE 語句中的 SET 子句。在將從文件中讀取的數(shù)據(jù)值插入表中之前, LOAD DATA INFILE 將對其進(jìn)行轉(zhuǎn)換,處理用戶變量中所包含的值。要將輸入數(shù)據(jù)列分配給用戶變量而不是表列,請以列列表的形式提供用戶變量的名稱。如果將列分配給 SET 表達(dá)式中未使用的用戶變量,則語句將忽略該列中的值,不會將其插入表中。

LOAD DATA INFILE '/tmp/City.txt'

INTO TABLE City ( @skip, @Name,CountryCode, @District, Population)

SET name=CONCAT(@Name,' ',@District);

在語句列的列表中指定用戶變量(而不是列名稱),通過使用 SET 子句(可選)轉(zhuǎn)換列值,該語句將忽略 SET 表達(dá)式中未使用的變量的值。

 

2)        重復(fù)記錄

使用 INSERT 或 REPLACE 語句向表添加新行時,可以控制語句對包含表中已有鍵的行的處理方法??梢栽试S語句生成錯誤,可以使用 IGNORE 子句放棄該行,也可以使用 ON DUPLICATE KEY UPDATE 子句修改現(xiàn)有的行。

LOAD DATA INFILE 提供了對重復(fù)行的相同級別控制,即通過使用兩個修飾符關(guān)鍵字 IGNORE (放棄包含重復(fù)鍵的行)和 REPLACE (替換為文件中包含相同鍵的版本);但是,其重復(fù)項(xiàng)處理行為根據(jù)數(shù)據(jù)文件是位于服務(wù)器主機(jī)上還是位于客戶機(jī)主機(jī)上而稍有不同,所以使用 LOAD DATA INFILE 時,必須考慮數(shù)據(jù)文件的位置。

3)        從服務(wù)器主機(jī)裝入文件

裝入位于服務(wù)器主機(jī)上的文件時, LOAD DATA INFILE 對包含重復(fù)唯一鍵的行的處理方法如下:

?   默認(rèn)情況下,輸入記錄造成重復(fù)鍵違規(guī)將產(chǎn)生一個錯誤;不會裝入數(shù)據(jù)文件的剩余部分。該點(diǎn)之前的已處理記錄將被裝入表中。

?   如果在文件名后提供 IGNORE 關(guān)鍵字,將忽略造成重復(fù)鍵違規(guī)的新記錄,并且語句不會生成錯誤。 LOAD DATA INFILE 將處理整個文件,裝入所有不包含重復(fù)鍵的記錄,并放棄剩余記錄。

?   如果在文件名后提供 REPLACE 關(guān)鍵字,造成重復(fù)鍵違規(guī)的新記錄將替換表中現(xiàn)存的包含重復(fù)鍵值的任何記錄。 LOAD DATA INFILE 將處理整個文件,將文件中的所有記錄裝入表中。

4)        從客戶機(jī)主機(jī)裝入文件

從客戶機(jī)主機(jī)裝入文件時,默認(rèn)情況下 LOAD DATA INFILE 將忽略包含重復(fù)鍵的記錄。即,默認(rèn)行為與指定 IGNORE 選項(xiàng)時相同。這是因?yàn)榭蛻魴C(jī) / 服務(wù)器協(xié)議不允許在傳輸開始后中斷從客戶機(jī)主機(jī)到服務(wù)器的數(shù)據(jù)文件傳輸,因此不方便在操作過程中中止操作。

5)        用法示例

mysql>use test

mysql> CREATE TABLE `t1` (

    ->   `f1` int(11) DEFAULT NULL,

    ->   `f2` varchar(20) DEFAULT NULL

    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1

    -> /*!50100 PARTITION BY HASH (f1)

    -> PARTITIONS 4 */ ;

Query OK, 0 rows affected (0.17 sec)

導(dǎo)入默認(rèn)格式 t1.tsv 文件

mysql> LOAD DATA local INFILE '/var/lib/mysql-files/t1.tsv' IGNORE INTO TABLE t1;

Query OK, 7 rows affected (0.01 sec)

Records: 7  Deleted: 0  Skipped: 0  Warnings: 0

 

mysql>

mysql>

mysql> select * from t1;

+------+------+

| f1   | f2   |

+------+------+

|  100 | a    |

|  200 | a    |

|  300 | a    |

|  400 | a    |

|    1 | a    |

|  101 | a    |

|  111 | b    |

+------+------+

7 rows in set (0.00 sec)

 

導(dǎo)入指定格式 t1.tsv 文件

mysql> LOAD DATA local INFILE '/var/lib/mysql-files/t1a.tsv' IGNORE INTO TABLE t1

    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 1 lines ;

Query OK, 6 rows affected (0.00 sec)

Records: 6  Deleted: 0  Skipped: 0  Warnings: 0

 

mysql>

示例:

LOAD DATA local INFILE '/Users/xxx/Downloads/loaddata.txt' IGNORE INTO TABLE testLoadData

FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 1 lines (username, age, description);


本文標(biāo)題:MySQL入門--導(dǎo)出和導(dǎo)入數(shù)據(jù)
文章出自:http://fisionsoft.com.cn/article/pdsips.html