亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > MySQL數(shù)據(jù)庫 Load Data 多種用法

MySQL數(shù)據(jù)庫 Load Data 多種用法

熱門標(biāo)簽:話務(wù)外呼系統(tǒng)怎么樣 大眾點(diǎn)評星級酒店地圖標(biāo)注 臨清電話機(jī)器人 高清地圖標(biāo)注道路 智能外呼系統(tǒng)復(fù)位 外東北地圖標(biāo)注 云南電商智能外呼系統(tǒng)價格 拉卡拉外呼系統(tǒng) 400電話可以辦理嗎

 MySQL Load Data 的多種用法

一、LOAD 基本背景

我們在數(shù)據(jù)庫運(yùn)維過程中難免會涉及到需要對文本數(shù)據(jù)進(jìn)行處理,并導(dǎo)入到數(shù)據(jù)庫中,本文整理了一些導(dǎo)入導(dǎo)出時常見的場景進(jìn)行示例演示。

二、LOAD 基礎(chǔ)參數(shù)

文章后續(xù)示例均使用以下命令導(dǎo)出的 csv 格式樣例數(shù)據(jù)(以 , 逗號做分隔符,以 " 雙引號作為界定符)

-- 導(dǎo)出基礎(chǔ)參數(shù)
select * into outfile '/data/mysql/3306/tmp/employees.txt'
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
from employees.employees limit 10;

-- 導(dǎo)入基礎(chǔ)參數(shù)
load data infile '/data/mysql/3306/tmp/employees.txt'
replace into table demo.emp
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
...

三、LOAD 示例數(shù)據(jù)及示例表結(jié)構(gòu)

以下為示例數(shù)據(jù),表結(jié)構(gòu)及對應(yīng)關(guān)系信息

-- 導(dǎo)出的文件數(shù)據(jù)內(nèi)容
[root@10-186-61-162 tmp]# cat employees.txt
"10001","1953-09-02","Georgi","Facello","M","1986-06-26"
"10002","1964-06-02","Bezalel","Simmel","F","1985-11-21"
"10003","1959-12-03","Parto","Bamford","M","1986-08-28"
"10004","1954-05-01","Chirstian","Koblick","M","1986-12-01"
"10005","1955-01-21","Kyoichi","Maliniak","M","1989-09-12"
"10006","1953-04-20","Anneke","Preusig","F","1989-06-02"
"10007","1957-05-23","Tzvetan","Zielinski","F","1989-02-10"
"10008","1958-02-19","Saniya","Kalloufi","M","1994-09-15"
"10009","1952-04-19","Sumant","Peac","F","1985-02-18"
"10010","1963-06-01","Duangkaew","Piveteau","F","1989-08-24"

-- 示例表結(jié)構(gòu)
SQL > desc demo.emp;
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| emp_no      | int           | NO   | PRI | NULL    |       |
| birth_date  | date          | NO   |     | NULL    |       |
| first_name  | varchar(16)   | NO   |     | NULL    |       |
| last_name   | varchar(16)   | NO   |     | NULL    |       |
| fullname    | varchar(32)   | YES  |     | NULL    |       | -- 表新增字段,導(dǎo)出數(shù)據(jù)文件中不存在
| gender      | enum('M','F') | NO   |     | NULL    |       |
| hire_date   | date          | NO   |     | NULL    |       |
| modify_date | datetime      | YES  |     | NULL    |       | -- 表新增字段,導(dǎo)出數(shù)據(jù)文件中不存在
| delete_flag | char(1)       | YES  |     | NULL    |       | -- 表新增字段,導(dǎo)出數(shù)據(jù)文件中不存在
+-------------+---------------+------+-----+---------+-------+

-- 導(dǎo)出的數(shù)據(jù)與字段對應(yīng)關(guān)系
emp_no  birth_date    first_name   last_name    gender  hire_date
"10001"  "1953-09-02"  "Georgi"     "Facello"    "M"    "1986-06-26"
"10002"  "1964-06-02"  "Bezalel"    "Simmel"     "F"    "1985-11-21"
"10003"  "1959-12-03"  "Parto"      "Bamford"    "M"    "1986-08-28"
"10004"  "1954-05-01"  "Chirstian"  "Koblick"    "M"    "1986-12-01"
"10005"  "1955-01-21"  "Kyoichi"    "Maliniak"   "M"    "1989-09-12"
"10006"  "1953-04-20"  "Anneke"     "Preusig"    "F"    "1989-06-02"
"10007"  "1957-05-23"  "Tzvetan"    "Zielinski"  "F"    "1989-02-10"
"10008"  "1958-02-19"  "Saniya"     "Kalloufi"   "M"    "1994-09-15"
"10009"  "1952-04-19"  "Sumant"     "Peac"       "F"    "1985-02-18"
"10010"  "1963-06-01"  "Duangkaew"  "Piveteau"   "F"    "1989-08-24"

四、LOAD 場景示例

場景1. LOAD 文件中的字段比數(shù)據(jù)表中的字段多

只需要文本文件中部分?jǐn)?shù)據(jù)導(dǎo)入到數(shù)據(jù)表中

-- 臨時創(chuàng)建2個字段的表結(jié)構(gòu)
SQL > create table emp_tmp select emp_no,hire_date from emp;
SQL > desc emp_tmp;
+-----------+------+------+-----+---------+-------+
| Field     | Type | Null | Key | Default | Extra |
+-----------+------+------+-----+---------+-------+
| emp_no    | int  | NO   |     | NULL    |       |
| hire_date | date | NO   |     | NULL    |       |
+-----------+------+------+-----+---------+-------+

-- 導(dǎo)入數(shù)據(jù)語句
load data infile '/data/mysql/3306/tmp/employees.txt'
replace into table demo.emp_tmp
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@C1,@C2,@C3,@C4,@C5,@C6) -- 該部分對應(yīng)employees.txt文件中6列數(shù)據(jù)
-- 只對導(dǎo)出數(shù)據(jù)中指定的2個列與表中字段做匹配,mapping關(guān)系指定的順序不影響導(dǎo)入結(jié)果
set hire_date=@C6,
    emp_no=@C1; 

-- 導(dǎo)入數(shù)據(jù)結(jié)果示例
SQL > select * from emp_tmp;
+--------+------------+
| emp_no | hire_date  |
+--------+------------+
|  10001 | 1986-06-26 |
|  10002 | 1985-11-21 |
|  10003 | 1986-08-28 |
|  10004 | 1986-12-01 |
|  10005 | 1989-09-12 |
|  10006 | 1989-06-02 |
|  10007 | 1989-02-10 |
|  10008 | 1994-09-15 |
|  10009 | 1985-02-18 |
|  10010 | 1989-08-24 |
+--------+------------+
10 rows in set (0.0016 sec)

場景 2. LOAD 文件中的字段比數(shù)據(jù)表中的字段少

表字段不僅包含文本文件中所有數(shù)據(jù),還包含了額外的字段

-- 導(dǎo)入數(shù)據(jù)語句
load data infile '/data/mysql/3306/tmp/employees.txt'
replace into table demo.emp
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@C1,@C2,@C3,@C4,@C5,@C6) -- 該部分對應(yīng)employees.txt文件中6列數(shù)據(jù)
-- 將文件中的字段與表中字段做mapping對應(yīng),表中多出的字段不做處理
set emp_no=@C1,
   birth_date=@C2,
   first_name=@C3,
   last_name=@C4,
   gender=@C5,
   hire_date=@C6;

場景3. LOAD 生成自定義字段數(shù)據(jù)

從場景 2 的驗(yàn)證可以看到,emp 表中新增的字段 fullname,modify_date,delete_flag 字段在導(dǎo)入時并未做處理,被置為了 NULL 值,如果需要對其進(jìn)行處理,可在 LOAD 時通過 MySQL支持的函數(shù) 或給定 固定值 自行定義數(shù)據(jù),對于文件中存在的字段也可做函數(shù)處理,結(jié)合導(dǎo)入導(dǎo)出,實(shí)現(xiàn)簡單的 ETL 功能,如下所示:

-- 導(dǎo)入數(shù)據(jù)語句
load data infile '/data/mysql/3306/tmp/employees.txt'
replace into table demo.emp
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@C1,@C2,@C3,@C4,@C5,@C6)              -- 該部分對應(yīng)employees.txt文件中6列數(shù)據(jù)

-- 以下部分明確對表中字段與數(shù)據(jù)文件中的字段做Mapping關(guān)系,不存在的數(shù)據(jù)通過函數(shù)處理生成(也可設(shè)置為固定值)
set emp_no=@C1,
   birth_date=@C2,
   first_name=upper(@C3),              -- 將導(dǎo)入的數(shù)據(jù)轉(zhuǎn)為大寫
   last_name=lower(@C4),               -- 將導(dǎo)入的數(shù)據(jù)轉(zhuǎn)為小寫
   fullname=concat(first_name,' ',last_name),    -- 對first_name和last_name做拼接
   gender=@C5,
   hire_date=@C6 ,
   modify_date=now(),                 -- 生成當(dāng)前時間數(shù)據(jù)
   delete_flag=if(hire_date'1988-01-01','Y','N'); -- 對需要生成的值基于某一列做條件運(yùn)算

場景4. LOAD 定長數(shù)據(jù)

定長數(shù)據(jù)的特點(diǎn)如下所示,可以使用函數(shù)取出字符串中固定長度來生成指定列數(shù)據(jù)

SQL > select 
    c1 as sample_data,
    substr(c1,1,3)  as c1,
    substr(c1,4,3)  as c2,
    substr(c1,7,2)  as c3,
    substr(c1,9,5)  as c4,
    substr(c1,14,3) as c5,
    substr(c1,17,3) as c6 from t1
    
*************************** 1. row ***************************
sample_data: ABC余振興CDMySQLEFG數(shù)據(jù)庫
         c1: ABC
         c2: 余振興
         c3: CD
         c4: MySQL
         c5: EFG
         c6: 數(shù)據(jù)庫

定長數(shù)據(jù)導(dǎo)入需要明確每列數(shù)據(jù)占用的字符個數(shù),以下直接使用 rpad 對現(xiàn)有的表數(shù)據(jù)填充空格的方式生成定長數(shù)據(jù)用作示例使用

-- 生成定長數(shù)據(jù)
SQL > select 
    concat(rpad(emp_no,10,' '),
          rpad(birth_date,19,' '),
          rpad(first_name,14,' '),
          rpad(last_name,16,' '),
          rpad(gender,2,' '),
          rpad(hire_date,19,' ')) as fixed_length_data 
      from employees.employees limit 10;

+----------------------------------------------------------------------------------+
| fixed_length_data                                                                |
+----------------------------------------------------------------------------------+
| 10001     1953-09-02         Georgi        Facello         M 1986-06-26          |
| 10002     1964-06-02         Bezalel       Simmel          F 1985-11-21          |
| 10003     1959-12-03         Parto         Bamford         M 1986-08-28          |
| 10004     1954-05-01         Chirstian     Koblick         M 1986-12-01          |
| 10005     1955-01-21         Kyoichi       Maliniak        M 1989-09-12          |
| 10006     1953-04-20         Anneke        Preusig         F 1989-06-02          |
| 10007     1957-05-23         Tzvetan       Zielinski       F 1989-02-10          |
| 10008     1958-02-19         Saniya        Kalloufi        M 1994-09-15          |
| 10009     1952-04-19         Sumant        Peac            F 1985-02-18          |
| 10010     1963-06-01         Duangkaew     Piveteau        F 1989-08-24          |
+----------------------------------------------------------------------------------+

-- 導(dǎo)出定長數(shù)據(jù)
select 
    concat(rpad(emp_no,10,' '),
          rpad(birth_date,19,' '),
          rpad(first_name,14,' '),
          rpad(last_name,16,' '),
          rpad(gender,2,' '),
          rpad(hire_date,19,' ')) as fixed_length_data 
into outfile '/data/mysql/3306/tmp/employees_fixed.txt'
character set utf8mb4
lines terminated by '\n'
from employees.employees limit 10;

-- 導(dǎo)出數(shù)據(jù)示例
[root@10-186-61-162 tmp]# cat employees_fixed.txt
10001     1953-09-02         Georgi        Facello         M 1986-06-26
10002     1964-06-02         Bezalel       Simmel          F 1985-11-21
10003     1959-12-03         Parto         Bamford         M 1986-08-28
10004     1954-05-01         Chirstian     Koblick         M 1986-12-01
10005     1955-01-21         Kyoichi       Maliniak        M 1989-09-12
10006     1953-04-20         Anneke        Preusig         F 1989-06-02
10007     1957-05-23         Tzvetan       Zielinski       F 1989-02-10
10008     1958-02-19         Saniya        Kalloufi        M 1994-09-15
10009     1952-04-19         Sumant        Peac            F 1985-02-18
10010     1963-06-01         Duangkaew     Piveteau        F 1989-08-24

-- 導(dǎo)入定長數(shù)據(jù)
load data infile '/data/mysql/3306/tmp/employees_fixed.txt'
replace into table demo.emp
character set utf8mb4
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@row)  -- 對一行數(shù)據(jù)定義為一個整體
set emp_no   = trim(substr(@row,1,10)),-- 使用substr取前10個字符,并去除頭尾空格數(shù)據(jù)
   birth_date = trim(substr(@row,11,19)),-- 后續(xù)字段以此類推
   first_name = trim(substr(@row,30,14)),
   last_name  = trim(substr(@row,44,16)),
   fullname  = concat(first_name,' ',last_name),  -- 對first_name和last_name做拼接
   gender   = trim(substr(@row,60,2)),
   hire_date  = trim(substr(@row,62,19)),
   modify_date = now(),
   delete_flag = if(hire_date'1988-01-01','Y','N'); -- 對需要生成的值基于某一列做條件運(yùn)算

五、LOAD 總結(jié)

1.默認(rèn)情況下導(dǎo)入的順序以文本文件 列-從左到右,行-從上到下 的順序?qū)?/p>

2.如果表結(jié)構(gòu)和文本數(shù)據(jù)不一致,建議將文本文件中的各列依次順序編號并與表中字段建立 mapping 關(guān)系,以防數(shù)據(jù)導(dǎo)入到錯誤的字段

3.對于待導(dǎo)入的文本文件較大的場景,建議將文件 按行拆分 為多個小文件,如用 split 拆分

4.對文件導(dǎo)入后建議執(zhí)行以下語句驗(yàn)證導(dǎo)入的數(shù)據(jù)是否有 Warning,ERROR 以及導(dǎo)入的數(shù)據(jù)量

  • GET DIAGNOSTICS @p1=NUMBER,@p2=ROW_COUNT;
  • select @p1 AS ERROR_COUNT,@p2 as ROW_COUNT;

5.文本文件數(shù)據(jù)與表結(jié)構(gòu)存在過大的差異或數(shù)據(jù)需要做清洗轉(zhuǎn)換,建議還是用專業(yè)的 ETL 工具或先粗略導(dǎo)入 MySQL 中再進(jìn)行加工轉(zhuǎn)換處理

以上就是 MySQL Load Data 數(shù)據(jù)的多種用法的詳細(xì)內(nèi)容,更多關(guān)于MySQL Load Data 的用法的資料請關(guān)注腳本之家其它相關(guān)文章!,希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL 發(fā)生同步延遲時Seconds_Behind_Master還為0的原因
  • 詳解MySQL的Seconds_Behind_Master
  • python3文件復(fù)制、延遲文件復(fù)制任務(wù)的實(shí)現(xiàn)方法
  • docker實(shí)現(xiàn)mysql主從復(fù)制的示例代碼
  • MySQL數(shù)據(jù)庫Shell import_table數(shù)據(jù)導(dǎo)入
  • Mysql數(shù)據(jù)庫的主從同步配置
  • Mysql實(shí)現(xiàn)簡易版搜索引擎的示例代碼
  • MySQL命令無法輸入中文問題的解決方式
  • 當(dāng)面試官問mysql中char與varchar的區(qū)別
  • MySQL的從庫Seconds_Behind_Master延遲總結(jié)

標(biāo)簽:溫州 定西 三明 揚(yáng)州 福州 山西 阿里 無錫

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL數(shù)據(jù)庫 Load Data 多種用法》,本文關(guān)鍵詞  MySQL,數(shù)據(jù)庫,Load,Data,多種,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL數(shù)據(jù)庫 Load Data 多種用法》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL數(shù)據(jù)庫 Load Data 多種用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲 欧美 成人日韩| 精品视频一区二区三区免费| 日韩在线观看网站| 韩国三级视频网站| 精品国产一区二区三区久久久蜜臀 | 亚洲第一页乱| 免费毛片基地| 欧美另类videosbestsex视频| 日韩中文字幕在线播放| 亚洲天堂免费观看| 午夜欧美成人香蕉剧场| 四虎影视久久久免费| 国产原创视频在线| 欧美a级片免费看| 四虎影视库| a级精品九九九大片免费看| 国产成+人+综合+亚洲不卡| 午夜在线亚洲男人午在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产麻豆精品视频| a级精品九九九大片免费看| 亚洲第一色在线| 国产麻豆精品免费视频| 国产激情一区二区三区| 成人a级高清视频在线观看| 国产一区免费在线观看| 999久久久免费精品国产牛牛| 精品久久久久久综合网| 久久国产影院| 成人免费一级毛片在线播放视频| 日本免费乱人伦在线观看| 高清一级做a爱过程不卡视频| 国产成+人+综合+亚洲不卡| 国产极品精频在线观看| 免费的黄视频| 日韩在线观看免费| 中文字幕97| 二级片在线观看| 青青青草影院| 国产国语在线播放视频| 九九九网站| 九九九网站| 欧美爱色| 韩国毛片| 毛片成人永久免费视频| 国产a一级| 亚洲精品永久一区| 韩国三级香港三级日本三级| 国产高清视频免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 韩国三级香港三级日本三级la | 精品视频在线观看免费| 国产成人啪精品视频免费软件| 九九精品久久| 香蕉视频亚洲一级| 四虎影视库| 日日日夜夜操| 91麻豆精品国产自产在线| 成人免费网站视频ww| 免费国产一级特黄aa大片在线| 韩国三级视频网站| 欧美一级视频高清片| 尤物视频网站在线| 国产网站免费视频| 国产伦精品一区二区三区在线观看| 色综合久久天天综合绕观看| 青青久久精品| 日韩男人天堂| 欧美另类videosbestsex视频| 在线观看成人网 | 国产麻豆精品hdvideoss| 青草国产在线观看| 日日夜夜婷婷| 成人免费一级毛片在线播放视频| 欧美国产日韩精品| 麻豆网站在线看| 青青久热| 久久久久久久久综合影视网| 91麻豆精品国产高清在线| 亚洲精品久久玖玖玖玖| 欧美a级大片| 国产视频一区二区在线播放| 国产麻豆精品视频| 国产伦理精品| 黄色免费三级| 午夜欧美成人香蕉剧场| 国产原创视频在线| 四虎影视久久| 欧美另类videosbestsex久久 | 欧美1区2区3区| 日韩专区一区| 国产国语在线播放视频| 精品国产香蕉伊思人在线又爽又黄| 免费的黄视频| 日韩免费在线视频| 国产不卡福利| 精品国产亚洲人成在线| 国产一区免费在线观看| 91麻豆精品国产自产在线| 久久国产影院| 国产亚洲精品aaa大片| 欧美α片无限看在线观看免费| 国产网站免费视频| 国产伦精品一区二区三区无广告| 国产极品精频在线观看| 日本免费区| 天天做日日爱夜夜爽| 欧美激情一区二区三区视频高清 | 精品国产一区二区三区久久久蜜臀 | 久久国产影院| 免费国产在线观看| 香蕉视频一级| 欧美激情在线精品video| 国产成a人片在线观看视频| 国产麻豆精品视频| 国产一级生活片| 91麻豆精品国产综合久久久| 韩国三级视频网站| 天天色色色| 欧美1区| 国产麻豆精品免费密入口| 精品国产亚一区二区三区| 日韩一级黄色| 91麻豆国产福利精品| 精品视频在线观看免费| 中文字幕一区二区三区 精品| 免费的黄色小视频| 久久99中文字幕久久| 国产不卡在线看| 精品国产三级a| 国产极品精频在线观看| 国产一区二区精品| 青青久热| 国产91精品一区二区| 日日夜夜婷婷| 国产原创中文字幕| 久久精品人人做人人爽97| 一级女人毛片人一女人| 欧美激情一区二区三区在线播放 | 日本特黄特黄aaaaa大片| 欧美国产日韩精品| 97视频免费在线观看| 国产精品自拍亚洲| 国产伦久视频免费观看 视频| 日韩免费在线| 国产亚洲免费观看| 四虎影视久久久| 麻豆污视频| 中文字幕97| 精品国产一区二区三区免费 | 国产一区二区精品尤物| 日韩一级黄色大片| 国产一区二区精品久久91| 青青青草视频在线观看| 黄色短视频网站| a级精品九九九大片免费看| 欧美激情一区二区三区视频高清 | 久久99爰这里有精品国产| 亚洲天堂在线播放| 免费国产在线视频| 国产不卡福利| 国产成人啪精品视频免费软件| 成人a大片在线观看| 成人免费一级毛片在线播放视频| 免费国产在线观看不卡| 九九久久99| 国产不卡福利| 黄色福利片| 91麻豆高清国产在线播放| 久久精品道一区二区三区| 成人免费福利片在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频一区二区在线播放| 一级毛片看真人在线视频| 国产极品白嫩美女在线观看看| 精品久久久久久免费影院| 国产不卡在线观看视频| 久久国产一区二区| 久久精品免视看国产明星| 午夜在线亚洲| 91麻豆tv| 日韩欧美一及在线播放| 精品在线观看国产| 国产91精品一区| 91麻豆爱豆果冻天美星空| 国产高清在线精品一区a| 国产成人欧美一区二区三区的| 色综合久久天天综合观看| 999久久久免费精品国产牛牛| 日韩av成人| 国产视频一区二区在线观看| 黄视频网站免费观看| 免费国产在线观看| 香蕉视频亚洲一级| 成人a大片在线观看| 国产高清在线精品一区a| 午夜家庭影院| 精品在线观看一区| 99久久网站| 精品视频一区二区三区|