日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

导入和导出

發布時間:2024/4/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 导入和导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

15.1 導入和導出操作

MYSQL有兩種SQL語句來用來導入數據從文件中到數據庫或導出數據從數據庫中到文件:

? ?1.LOAD DATA INFILE 讀取數據記錄從文件中和插入他們到一個表中

? ?2.select 。。。into OUTFILE 寫一個select操作的結果到一個文件中

命令行有mysqlimport和mysqldump

15.2 導入和導出使用SQL

15.2.1 導入數據load data infile

?load data infile讀取值從一個單獨數據文件。

load data infile ‘file_name’ into table table_name;

load data infile 'C:/mydata/data.txt' into table t;

load data [Local] infile 'file_name'

? ? [IGNORE|REPLACE]

? ?into table table_name

? ?format_specifiers

? ?[IGNORE n ?LINES]

? ?[(column_list)]

? [set (assignment_list)]

15.2.1.1 指定數據文件位置

默認情況下,MYSQL任務文件位于服務器中。MYSQL服務器直接讀取文件

2.語句開始load data local infile 而不是load data infile,文件被讀取從客戶端。local意味著local對于客戶端。

如果指定了先對路徑就會從數據庫的目錄中尋找。

如果使用loacl來讀取數據文件在客戶端,路徑名字翻譯:

? ?1.如果你引用文件通過它的全路徑名,客戶端在exact loaction?

? ? 2.如果你指定了相對路徑名,客戶端程序尋找相對文件到它目前目錄。

? ? LOAD DATA ?LOCAL INFILE ? ‘/var/tmp/data.tx’ ?into table t;

? ? LOAD ?DATA LOCAL INFILE 'data.txt' into table t;

15.2.1.2 跳過數據文件行

load data infile '/tmp/data.txt' into table t ignore 1 lines;

15.2.1.3 跳過自動標的列

默認情況下,數據文件行的排列順序和表的排列順序是一直的

列舉一些列在下面的兩種方式:

load data infile '/tmp/people.txt' into table subscriber (name,address);

順序不同時采用 load data infile '/tmp/people.txt' into table subscriber (address,name);

15.2.1.4 skipping or transforming column values

跳過和轉換列值

load data infile '/tmp/people2.txt' into table subscriber (@skip ,@firest,@last,address) set name= Concat(@first,' ',@last);

15.2.1.5 load data infile 和重復的記錄

當數據文件在服務器端是處理,重復的記錄如下:

1.輸入記錄引發一個重復鍵值沖突導致一個錯誤和剩下的數據文件沒有被加載。處理的記錄到點被加載進表

2.如果你指定了IGNORE關鍵字,新記錄引發重復鍵值沖突被忽略和沒有錯誤發生。load data infile處理整個文件,加載所有沒有包含重復鍵值和拋棄剩下的

3.如果你指定了replace鍵值在文件名后,新的九樓引發重復鍵值沖突替代任何已經存在的表中的記錄。

IGNORE和REPLACE都是排他性的。

15.2.1.6 由LOAD DATA INFILE提供的信息

15.2.1.7 對于LOAD DATA INFILE需要的特權

需要INSRT特權,如果指定了replace修飾符需要deltet特權。

15.2.1.8 load data infile的效率

使用load data with load data infile是比使用insert語句更加有效率。

15.2.2 exproting data

select * into outfile 'Country.txt' from country;

1.產生文件在服務器,為了發送到客戶端

2.語句有FILE privilege獲取文件

3.被創建的文件獲取權限擁有MySQL服務器

4.輸出文件每一行都包含一行。

言外之意:

1.如果你直接訪問文件,必須登錄夫妻否

2.文件全局可以讀,任何登錄系統的都可以讀取它。

3.MySQL服務器擁有的文件,可能布包好移除它在你處理它后。需要mysql的管理員來移除它。

15.2.3 數據文件的格式指定

1.0 數據值被認為由tab字符終止

2 數據值被認為沒有引用的。為了

默認的終止符是新行符,為了表明一個行終止,使用lines語句。

LINES TEMMINATED BY ‘\n’

ESCAPED BY :指定分隔符

select * into outfile '/tmp/data-out.txt'

FIELDS TEMINATED BY ',' ENCLOUSED by '"'

LINES TERMINATED BY '\r'

FROM t;


15.2.4 導入和導出NULL值

MYSQL使用\n來表明NULL值

1.如LOAD DATA INFILE,\n表明NULL,MYSQL轉換一個空值為一個空字符,或者0,取決于相應的表列。

2.對于select ...into outfile,mysql寫NULL值到輸出文件\N。

15.3 導入和導出從命令行

mysqlimport options db_name input_file。。。

根據文件名來決定表名,每個表被加載都是已經存在的。--lines-terminated-by=string ? --fields=terminated-by=string

--fields-enclosed-by=char or --fields-optionally-encolose-by=char ?--fields-escaped-by=char

mysqlimport --lines-terminated-by='\r\n" world City.txt

shell> mysqlimport --fields-enclosed-by='"' world City.txt

其他的mysqlimport選項提供可選的控制對于數據文件的加載:

1.--ignore 或者--replace,處理重復的鍵值

2.--local 默認情況被加載的文件在服務器端,--local,mysqlimport讀取數據文件和通過網絡發送到服務器。

15.3.2 導出數據使用mysqldump

為了使用mysqldump來導出表作為tab分隔符的數據文件,指定--tab=dir_name選項。

mysqldump --tab=dir_name options db_name tab_name...

如:mysqldump --tab=/tmp world City

重新導入:cd /tmp ? ? mysql world < city.sql ? ? mysqlimport world City.txt

如果不想生成.sql文件,可以使用--no-create-info選項

這--all-databases和--databases選項對于mysqldump被用來輸出多個數據。


總結

以上是生活随笔為你收集整理的导入和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。