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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

02-PDI(Kettle)导入与导出

發(fā)布時(shí)間:2023/12/1 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 02-PDI(Kettle)导入与导出 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 02-PDI(Kettle)導(dǎo)入與導(dǎo)出
    • 多個(gè)excel表格數(shù)據(jù)的合并
      • 實(shí)驗(yàn)步驟:
      • 拓展 Excel介紹
    • 基于文本的數(shù)據(jù)導(dǎo)入與導(dǎo)出
      • 實(shí)驗(yàn)步驟
      • 擴(kuò)展 回車與換行的區(qū)別
    • 基于XML文本的數(shù)據(jù)導(dǎo)入導(dǎo)出
      • 步驟設(shè)計(jì)
      • 擴(kuò)展 XML教程
    • 基于JSON文本的數(shù)據(jù)導(dǎo)入導(dǎo)出
      • 實(shí)驗(yàn)步驟
      • 拓展 JSON
    • 基于數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入與導(dǎo)出
      • 實(shí)驗(yàn)步驟
      • 拓展 kettle分享數(shù)據(jù)庫(kù)連接

02-PDI(Kettle)導(dǎo)入與導(dǎo)出

本文主要介紹基于Kettle的導(dǎo)入與導(dǎo)出,并針對(duì)每種文件特點(diǎn)進(jìn)行相關(guān)介紹。

多個(gè)excel表格數(shù)據(jù)的合并

實(shí)驗(yàn)步驟:

  1. 數(shù)據(jù)準(zhǔn)備:
    在課程信息表1.xlsx中的sheet1中提供如下數(shù)據(jù),
    將該文件復(fù)制幾份,放在不同的子目錄下,本文的目錄數(shù)據(jù)結(jié)果如下:
D:\kettle-XXX-data\多個(gè)Excel合并data>tree . /f /a
卷 軟件 的文件夾 PATH 列表
D:\KETTLE-REPOSITORY-DATA\CHAPTER03-1-02多個(gè)EXCEL合并DATA
|   課程信息表1.xlsx
|   課程信息表2.xlsx
|   課程信息表3.xlsx
|
\---子目錄課程信息表4.xlsx
  1. 設(shè)計(jì)轉(zhuǎn)換

  2. 命名參數(shù)的配置。

    在畫(huà)布上點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Properties”調(diào)出命名參數(shù)設(shè)置窗口。
    選擇卡項(xiàng)“paramerers”配置命名參數(shù),其中“Default Value”的值為待處理的輸入數(shù)據(jù)的實(shí)際存儲(chǔ)路徑。

  3. ““Microsoft Excel input”的配置:

    Files選項(xiàng)設(shè)置:
    數(shù)據(jù)源的 配置如下圖所示:(如果該文件夾下包含有子目錄,則“包含子目錄”配置為”Y”)

    sheet選項(xiàng)設(shè)置:
    數(shù)據(jù)表和數(shù)據(jù)行列的的選擇如下圖配置:
    Fields選項(xiàng)設(shè)置:
    重新配置數(shù)據(jù)的字段,如下圖所示。

  4. “Microsoft Excel 輸出”的配置
    配置輸出的文件名,Excel版本,sheet等,如下圖所示。
    配置輸出的字段名,如下圖所示。

  5. 運(yùn)行轉(zhuǎn)換
    依次點(diǎn)擊菜單“Action->run”運(yùn)行程序.運(yùn)行完畢后,如下圖所示,

    點(diǎn)擊“Preview data”瀏覽輸出數(shù)據(jù),亦可在實(shí)驗(yàn)輸出路徑上查看驗(yàn)證輸出的Excel文件數(shù)據(jù),已經(jīng)合并成了一個(gè)Excel文件。

拓展 Excel介紹

最大行 1048576

最大列 列從A開(kāi)始,Z結(jié)尾,XFD等同于26進(jìn)制的O64 XFD是26進(jìn)制的(24*26+6)*26+4=16384…也就是2^14 =16384

按住下鍵9小時(shí)得出的吧。其實(shí)用Ctrl+下,一次就到最后一行了。1048576好啊,這個(gè)數(shù)多整,1024x1024。對(duì)學(xué)計(jì)算機(jī)的人來(lái)說(shuō),256、1024、2^16=65536、1048576,這些都是很整很整的數(shù)。

Excel 規(guī)范與限制

https://support.microsoft.com/zh-cn/office/excel-%e8%a7%84%e8%8c%83%e4%b8%8e%e9%99%90%e5%88%b6-1672b34d-7043-467e-8e27-269d656771c3?ui=zh-cn&rs=zh-cn&ad=cn#ID0EDBD=Newer_versions

基于文本的數(shù)據(jù)導(dǎo)入與導(dǎo)出

文本文件是使用ETL工具處理的最簡(jiǎn)單的一種數(shù)據(jù)。文本文件易于交換,壓縮比高,任何文本編輯器都可打開(kāi)??傮w來(lái)說(shuō),文本文件可分為分割符文件和固定寬度文件。
本實(shí)驗(yàn)讀入student.csv文件,輸出固定寬度為15字節(jié)的student.txt文件。student.csv文件以逗號(hào)為分隔符。

實(shí)驗(yàn)步驟

  1. 數(shù)據(jù)準(zhǔn)備:
    student.csv的內(nèi)容
cat student.csv
學(xué)號(hào),姓名,性別,班級(jí),年齡,成績(jī),身高,手機(jī)
1,張一,男,1701,16,78,170,18946554571
2,李二,男,1701,17,80,175,18946554572
3,謝遜,男,1702,18,95,169,18946554573
4,趙玲,女,1702,19,86,180,18956257895
5,張明,男,1704,20,85,185,18946554575
6,張三,女,1704,18,92,169,18946554576
  1. 設(shè)計(jì)轉(zhuǎn)換圖。

如下:

  1. “CSV file input”步驟的設(shè)置

(1)點(diǎn)擊“Browse(B)瀏覽”按鈕,選擇student.csv文件作為輸入文件來(lái)處理。
(2)“Delimiter列分隔符”選擇逗號(hào)(,),CSV文件默認(rèn)是逗號(hào)分割。
(3)勾選“Header row present 包含列頭行”,表示此文件內(nèi)含有文件頭(列名)
(4)中文亂碼可選擇“File encoding 文件編碼”為UTF-8
(5)點(diǎn)擊“Get Fields獲取字段”,在此步驟的字段列表中選擇出此文件的8個(gè)字段。

csv input 注意事項(xiàng)
如果輸出為等寬文本,需要在獲取字段后,修改所有字段的類型為string。

  1. “Text file output”步驟的設(shè)置
    File選項(xiàng)設(shè)置:
    (1)點(diǎn)擊“Browse(B)瀏覽”按鈕,選擇等寬文件的輸出路徑。
    (2)文件的后綴名在“extension 擴(kuò)展名”中指定txt。
    Content選項(xiàng)設(shè)置:
    (3)“separator分隔符”配置為空,因?yàn)槲覀冃枰敵鰶](méi)有分隔符的文件。
    (4)“Format格式”選擇“LF terminated(Unix)”或“CR+LF terminated(window,DOS)”。
    Fileds選項(xiàng)設(shè)置:
    (5)點(diǎn)擊“Get Fields獲取字段”按鈕,在字段列表上選擇出此文件的所有字段。然后,在各個(gè)字段的“長(zhǎng)度”中,輸入“15”,表示每個(gè)輸出字段的長(zhǎng)度為15字節(jié)。

  1. 點(diǎn)擊運(yùn)行按鈕運(yùn)行轉(zhuǎn)換。
    輸出文件輸出文件.txt內(nèi)容如下:

擴(kuò)展 回車與換行的區(qū)別

轉(zhuǎn)載于:http://www.pythontab.com/html/2017/linuxkaiyuan_0115/1116.html

關(guān)于換行和回車其實(shí)平時(shí)我們不太在意,所以關(guān)于兩者的區(qū)別也不太清楚,在平時(shí)開(kāi)發(fā)時(shí)可能會(huì)遇到一些文件處理的問(wèn)題,放到不同的操作系統(tǒng)上出現(xiàn)各種坑。那么回車和換行到底有哪些區(qū)別呢?今天咱們就來(lái)總結(jié)一下。

  1. 由來(lái)

在計(jì)算機(jī)還沒(méi)有出現(xiàn)之前,有一種叫做電傳打字機(jī)(Teletype Model 33)的機(jī)械打字機(jī),每秒鐘可以打10個(gè)字符。但是它有一個(gè)問(wèn)題,就是打完一行換行的時(shí)候,要用去0.2秒,正好可以打兩個(gè)字符。要是在這0.2秒里面,又有新的字符傳過(guò)來(lái),那么這個(gè)字符將丟失。

于是,研制人員想了個(gè)辦法解決這個(gè)問(wèn)題,就是在每行后面加兩個(gè)表示結(jié)束的字符。一個(gè)叫做“回車”,告訴打字機(jī)把打印頭定位在左邊界,不卷動(dòng)滾筒;另一個(gè)叫做“換行”,告訴打字機(jī)把滾筒卷一格,不改變水平位置。

這就是“換行”和“回車”的由來(lái)。

  1. 使用

后來(lái),計(jì)算機(jī)發(fā)明了,這兩個(gè)概念也就被般到了計(jì)算機(jī)上。那時(shí),存儲(chǔ)器很貴,一些科學(xué)家認(rèn)為在每行結(jié)尾加兩個(gè)字符太浪費(fèi)了,加一個(gè)就可以。于是,就出現(xiàn)了分歧。

回車 \r 本義是光標(biāo)重新回到本行開(kāi)頭,r的英文return,控制字符可以寫成CR,即Carriage Return

換行 \n 本義是光標(biāo)往下一行(不一定到下一行行首),n的英文newline,控制字符可以寫成LF,即Line Feed

符號(hào) ASCII碼 意義

\n 10 換行NL (0x0A)

\r 13 回車CR (0x0D)

\r\n (0x0D,0x0A)

在不同的操作系統(tǒng)這幾個(gè)字符表現(xiàn)不同,比如在WIN系統(tǒng)下,這兩個(gè)字符就是表現(xiàn)的本義,在UNIX類系統(tǒng),換行\(zhòng)n就表現(xiàn)為光標(biāo)下一行并回到行首,在MAC上,\r就表現(xiàn)為回到本行開(kāi)頭并往下一行,至于ENTER鍵的定義是與操作系統(tǒng)有關(guān)的。通常用的Enter是兩個(gè)加起來(lái)。

不同操作系統(tǒng)下的含義:

\n: UNIX 系統(tǒng)行末結(jié)束符

\r\n: window 系統(tǒng)行末結(jié)束符

\r: MAC OS 系統(tǒng)行末結(jié)束符

我們經(jīng)常遇到的一個(gè)問(wèn)題就是,Unix/Mac系統(tǒng)下的文件在Windows里打開(kāi)的話,所有文字會(huì)變成一行;而Windows里的文件在Unix/Mac下打開(kāi)的話,在每行的結(jié)尾可能會(huì)多出一個(gè)^M符號(hào)。

后來(lái),Mac 改成跟Unix/Linux 一樣的“\n”

“first line\rsecond line” 的效果是:

“first line\nsecond line” 的效果是:


只有 “first line\r\nsecond line” 才能展示成:

計(jì)算機(jī)時(shí)代改用計(jì)算機(jī)之后,該怎么辦呢?早期的 ADM-3A 計(jì)算機(jī)的鍵盤有人覺(jué)得還是保留原來(lái)打字機(jī)的習(xí)慣,繼續(xù)用 CR LF (\r\n),例如 MS-DOS 操作系統(tǒng),再比如網(wǎng)絡(luò)協(xié)議。 Windows 自然也是沿用 MS-DOS 的傳統(tǒng)。有人覺(jué)得計(jì)算機(jī)沒(méi)有必要保留打字機(jī)的舊習(xí)慣,留下一個(gè)就夠了。這其中又有人用 LF (\n),例如 Unix 也有人用 CR (\r),例如 Mac OS 經(jīng)典操作系統(tǒng)(Mac OS 9 以及之前)。后來(lái) Mac OS X 也把 Mac OS 9 的規(guī)矩廢除了,投奔Unix,所以改成用 LF (\n)。今天,我們看到的就是 Windows 與網(wǎng)絡(luò)協(xié)議都用 CR LF ,而類 Unix 操作系統(tǒng)都用 LF 。

  1. 軟回車和硬回車

再擴(kuò)展一下回車的一些知識(shí)。
硬回車就是普通我們按回車產(chǎn)生的,它在換行的同時(shí)也起著段落分隔的作用。
軟回車是用 Shift + Enter 產(chǎn)生的,它換行,但是并不換段,即前后兩段文字在 Word 中屬于同一“段”。在應(yīng)用格式時(shí)你會(huì)體會(huì)到這一點(diǎn)。
軟回車能使前后兩行的行間距大幅度縮小,因?yàn)樗皇嵌温錁?biāo)記,要和法定的段落標(biāo)記——硬回車區(qū)別出來(lái)。硬回車的html代碼是

,段落的內(nèi)容就夾在里面,而軟回車的代碼很精悍:

。網(wǎng)頁(yè)的文字如果復(fù)制到word中,則硬回車變?yōu)閺澢募^,軟回車變?yōu)橄蛳碌募^。

基于XML文本的數(shù)據(jù)導(dǎo)入導(dǎo)出

步驟設(shè)計(jì)

  1. 準(zhǔn)備數(shù)據(jù)
<?xml version='1.0' encoding='UTF-8'?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary Moore</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
</CATALOG>
  1. 轉(zhuǎn)換步驟設(shè)計(jì)如下:
  2. Get data from XML設(shè)置

將文件添加到選擇文件區(qū)域
選擇get xpath nodes
設(shè)置fileds

  1. Excel輸出設(shè)置

這里先不描述

  1. XML output設(shè)置
  2. 輸出的文件為:
<?xml version='1.0' encoding='UTF-8'?>
<CATALOG>
<CD><TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.9</PRICE> <YEAR>1985</YEAR></CD>
...
<CD><TITLE>Still got the blues</TITLE> <ARTIST>Gary Moore</ARTIST> <COUNTRY>UK</COUNTRY> <COMPANY>Virgin records</COMPANY> <PRICE>10.20</PRICE> <YEAR>1990</YEAR></CD>
</CATALOG>

擴(kuò)展 XML教程

內(nèi)容較多,參考
http://www.jk1123.com/?p=124
https://blog.csdn.net/L_ZG_/article/details/105363109

基于JSON文本的數(shù)據(jù)導(dǎo)入導(dǎo)出

實(shí)驗(yàn)步驟

  1. 準(zhǔn)備數(shù)據(jù)
    本案例數(shù)據(jù)位于:XX\read-nested-fields.js
    內(nèi)容如下:
  {"missions":[{"id": "59434767","timestamp": "2011-11-21 09:21:53","data": [{"field": "13776121","value": "Baylor Dallas"},{"field": "13776401","value": "CHF"},{"field": "13777966","value": "John Doe"},{"field": "13780027","value": "9999"} ]},{"id": "59474875","timestamp": "2011-11-21 17:01:22","data": [{"field": "13776121","value": "Healthsouth,"},{"field": "13776401","value": "Pneumonia"},{"field": "13777966","value": "Jane Doe"} ]}],"total": 2,"pages": 1}
  1. 步驟設(shè)計(jì)

轉(zhuǎn)換步驟設(shè)計(jì)如下:

  1. json input 設(shè)置
    File選項(xiàng)設(shè)置:
    設(shè)置文件地址:XX\read-nested-fields.js

content選項(xiàng)設(shè)置為默認(rèn)設(shè)置

fields選項(xiàng)設(shè)置:
id $.missions…id 中$表示json數(shù)據(jù),.missions…id表示獲取該文件中missions下的子元素的中的id子元素。
data $.missions…data 中$表示json數(shù)據(jù),.missions…data表示獲取該文件中missions下的子元素的中的data子元素。

  1. json input get -nested fields設(shè)置
    File選項(xiàng)設(shè)置:
    勾選source is from previous step,表示選擇讀取上一步驟的源字段
    select field:會(huì)自動(dòng)提示上一步驟中的data和id字段,這里勾選data字段。

    fileds選項(xiàng)設(shè)置

  2. excel output設(shè)置
    與前面基本類似,重點(diǎn)在于設(shè)置字段選擇

  3. json out put 設(shè)置

拓展 JSON

JSON格式相關(guān)
https://www.bejson.com/

基于數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)入與導(dǎo)出

實(shí)驗(yàn)步驟

當(dāng)前,市場(chǎng)上主流的關(guān)系型數(shù)據(jù)庫(kù)有MySQL、Oracle、SQL Server、DB2等。面對(duì)這些類型的關(guān)系型數(shù)據(jù)庫(kù),Kettle都可以使用“表輸入”“表輸出”這兩個(gè)步驟完成數(shù)據(jù)的導(dǎo)入與導(dǎo)出。
本實(shí)驗(yàn)讀入student表數(shù)據(jù),輸出滿足身高大于等于170,成績(jī)大于等于80的學(xué)生數(shù)據(jù)。輸出的數(shù)據(jù)存儲(chǔ)在StuOut表中。

1.在mysql命令行執(zhí)行student.sql腳本腳本內(nèi)容

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`學(xué)號(hào)` int(11) NOT NULL,`姓名` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`性別` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`班級(jí)` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`年齡` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`成績(jī)` int(15) NULL DEFAULT NULL,`身高` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`手機(jī)` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`學(xué)號(hào)`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '張一', '男', '1701', '16', 78, '170', '18946554571');
INSERT INTO `student` VALUES (2, '李二', '男', '1701', '17', 80, '175', '18946554572');
INSERT INTO `student` VALUES (3, '謝遜', '男', '1702', '18', 95, '169', '18946554573');
INSERT INTO `student` VALUES (4, '趙玲', '女', '1702', '19', 86, '180', '18956257895');
INSERT INTO `student` VALUES (5, '趙明', '男', '1704', '20', 85, '185', '18946554575');
INSERT INTO `student` VALUES (6, '張三', '女', '1704', '18', 92, '169', '18946554576');SET FOREIGN_KEY_CHECKS = 1;

執(zhí)行腳本

source  /home/ubuntu/student.sql

2.新建轉(zhuǎn)換如下

  1. data grid設(shè)置
  2. table input設(shè)置
    創(chuàng)建mysql_conn連接,并測(cè)試
    測(cè)試完成后,執(zhí)行Get SQL select statement
    修改sql語(yǔ)句,添加
WHERE 身高>? AND 成績(jī)>?

這一步驟需要勾選Replace variables in,并選擇insert data from step選擇上一步驟的data grid。
完整SQL為:

SELECT學(xué)號(hào)
, 姓名
, 性別
, 班級(jí)
, 年齡
, 成績(jī)
, 身高
, 手機(jī)
FROM student
WHERE 年齡 >? AND 成績(jī) > ?

  1. table output
    選擇target后,可以執(zhí)行下sql
    執(zhí)行sql后,可以映射字段

注意:這里可以多次嘗試,比如去掉specify database fields,get fields ,table field的字段可以手動(dòng)選擇。

拓展 kettle分享數(shù)據(jù)庫(kù)連接

先在一個(gè)轉(zhuǎn)換中創(chuàng)建連接后,通過(guò)view – 》database connections --》 數(shù)據(jù)庫(kù)連接–》share就可以分享了

總結(jié)

以上是生活随笔為你收集整理的02-PDI(Kettle)导入与导出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。