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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql多行合并成一行_数据文件合并与拆分

發布時間:2025/5/22 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql多行合并成一行_数据文件合并与拆分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【摘要】

本文介紹將多個文本文件和 Excel 文件合并成一個文件,或者將一個文件拆分成幾個小文件時,如何處理會遇到的幾種情況,并用 esProc SPL 舉例實現。

在數據處理業務中,經常要把文件結構相同或近似相同的數據文件合并成一個文件,或者將一個比較大的數據文件拆分成小的數據文件。本文將介紹文本文件和 Excel 文件合并及拆分會遇到的幾種情況,并提供用 esProc SPL 編寫的代碼示例。esProc 是專業的數據計算引擎,SPL 中有完善的文件導入、導出及目錄操作函數,非常適合做數據文件的合并及拆分工作。

一、 文件合并

1. 同構文本文件合并

在某個文件目錄下有多個文本文件,這些文件表頭和列結構完全相同,只是數據行數和數據內容不同,需要將這些文件的數據全部合并到一個文本文件中,共用同一個表頭。

示例:在e:/orders目錄下有每日的訂單文本文件,每個文件的結構相同,第一行是列名,第二行開始是數據,如下圖所示,請將它們合并成一個訂單表文件orders.txt。

esProc SPL腳本如下:

A注釋

如果e:/orders還有子目錄,子目錄中的txt文件也需要一起合并,那么把A1格改成=directory@ps("e:/orders/*.txt"),選項@s表示遞歸查找所有子目錄下的文件。

上面這段腳本是假設內存能夠裝下合并以后的全部數據,如果裝不下,那么應該用下面這段腳本:

ABC

A1 列出目錄中的所有txt文件的完整路徑名稱,如果要查找子目錄,則加上@s選項

A2 對列出的文件進行循環

B2 用游標讀取每一個文件,@t表示第一行是列名

B3-C4 將B2游標中數據導出,第一次要導出列名,其后用@a進行追加

2. 結構近似的文本文件合并

如果文件結構并不是完全相同,比如列的順序不一樣、列數不一樣,但各文件都含有共同的幾列,想要把這些共同列的數據都合并到一個文件中。合并這些文件時,需要按指定順序讀出每個文件中的這些共同列數據。

示例:還是上面這個例子,已知所有訂單文件都有ID、Company、Area、OrderDate、Amount這5列,但各文件中列的順序并不相同,有的文件還有其它一些列,請將各文件中的這5列數據合并到orders.txt文件中。

esProc SPL腳本如下:

A注釋

同樣地,如果內存裝不下合并后的所有數據,則使用下面這段腳本:

ABC

3. 文件名轉成列數據

在合并數據的同時,需要為合并后的數據增加一列,并用合并前的文件名給此列賦值,以便標記數據類別或來源。

示例:在e:/orders目錄下有各種零件的訂單Excel文件,文件名就是零件的名字,比如tyre.xlsx、engine.xlsx……等,每個文件的結構相同,第一行是列名,第二行開始是數據,如下圖所示,請將它們合并成一個訂單表文件orders.xlsx,并增加一列PartName用來記錄零件的名字。

esProc SPL腳本如下:

A注釋

同樣地,如果內存裝不下合并后的所有數據,則使用下面這段腳本:

ABC

合并后的orders.xlsx文件部分數據如下圖所示:

二、 文件拆分

1. 分組拆分

對文件中數據進行分組,把每組數據單獨存為一個文件,用組名為文件命名。

示例:在訂單表Excel文件中有各種零件的訂單,請把同種零件的訂單各存為一個Excel文件,以便發送給零件生產部門。

esProc SPL腳本如下:

A1 讀入所有原始數據

B1 按partName分組

A2 循環每個零件組的訂單信息

B2 以零件名稱作為文件名,導出零件信息

如果原文件很大,不能全部裝入內存,那么應該使用游標方式讀數,腳本如下:

A1 創建游標讀取原始數據

A2 循環游標讀數,每次讀50000行(讀多少行根據內存大小決定)

B2 對每次讀取的數據按partName分組

B3 循環每組零件

C3 以零件名稱作為文件名創建文件對象

C4-D5 如果文件已存在,則用@a追加寫入零件訂單信息,不存在則用@t先寫入列名再導入數據

2. 記錄占據多行的拆分

在文本文件中,一條數據記錄是由多行數據組成的,在拆分成小文件時,要識別哪幾行是同一條數據記錄,保證同一條數據記錄不會被拆分到兩個文件中。

示例1:有網站運行日志文件log.txt,每條日志由5行組成,現在需要把這個日志文件拆分成一些小文件,每個文件由1000條日志組成。

esProc SPL腳本如下:

A1 用游標讀取日志文件數據,@s表示將整行讀成一個字符串

A2 循環游標,每次取5000行,剛好是1000條日志

B2 按循環序號生成日志文件名,如log_1.txt、log_2.txt……,然后將當前取出的所有行寫入

示例2:有程序運行日志文件log.txt如下圖所示,每條日志由不確定的幾行組成,每條日志由中括號開頭,其后只要不是中括號開頭的行,都與它屬于同一條日志。現在需要把這個日志文件拆分成一些小文件,每個文件由1000條日志組成。

esProc SPL腳本如下:

A1 打開日志文件讀取數據,@n表示將每一行讀成一個字符串,所有串組成一個序列返回

B1 篩選出非空的行

A2 按行是否用中括號開頭作為分組條件,中括號開頭的作為一個新組,不是則并到當前組。最后把所有組序列轉換成游標

A3 循環游標,每次取1000個組,即1000條日志

B3 按循環序號生成日志文件名,如log_1.txt、log_2.txt……

B4 兩層循環,外層是循環1000個組,內層循環每組的成員(即數據行),將每行追加寫入文件

《SPL CookBook》中有更多相關計算示例。

總結

以上是生活随笔為你收集整理的mysql多行合并成一行_数据文件合并与拆分的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美黄色大片免费看 | 啪啪亚洲| 久久av不卡 | 日本www在线播放 | 天堂资源站 | 高潮一区二区三区乱码 | 91亚洲国产成人精品一区二三 | 免费在线看视频 | 美女视屏 | 亚洲人在线观看 | 初高中福利视频网站 | 久久成人一区 | 国产日产亚洲系列最新 | 国产一卡二卡 | 95香蕉视频| 色欲国产精品一区二区 | 国产精品毛片久久久久久久 | 成人免费公开视频 | 噼里啪啦免费看 | 日本三级久久 | 开心激情播播网 | 国产午夜一区二区三区 | 91蝌蚪91九色白浆 | 久热国产在线 | 热久久网站 | 国产人妻久久精品一区二区三区 | 国产亚韩 | 69精品无码成人久久久久久 | 你懂的国产 | 国产青青草视频 | 在线观看视频亚洲 | 91精品在线观看入口 | 国产乱码精品一区二三赶尸艳谈 | 午夜久久久久久久久久影院 | 18成人免费观看网站下载 | 黄色大片在线播放 | 欧美一本 | 亲嘴扒胸摸屁股免费视频日本网站 | 亚洲激情文学 | 手机看片国产精品 | 一级免费片 | 亚洲50p| 国产精品久久不卡 | 亚洲一区二区精品视频 | 亚洲av成人精品午夜一区二区 | 国产成人无码一区二区在线播放 | 五月婷在线 | 日韩中文字幕一区二区三区四区 | 国产ts三人妖大战直男 | 欧美大尺度床戏做爰 | 国产91嫩草 | 超碰2023 | 极品白嫩的小少妇 | 黄色av免费在线看 | 亚洲欧美国产精品久久久久久久 | 亚洲小视频在线观看 | 性欧美18—19sex性高清 | 大白屁股一区二区视频 | 久青草视频| 亚洲精品乱码久久久久 | 黄色片免费看 | 国产午夜在线一区二区三区 | 一级黄色片免费看 | 欧美激情视频在线播放 | 女人做爰全过程免费观看美女 | 天天插综合网 | 日韩免费高清一区二区 | 亚洲码国产精品高潮在线 | 日本爽爽爽爽爽爽在线观看免 | 91正在播放| 91抖音在线观看 | 青草视频免费观看 | 四虎1515hh.com| 五月香蕉网| 日本人视频69式jzzij | 秋霞一区| 欧美日韩激情在线观看 | 久久久亚洲一区 | 欧美一性一交 | 欧美亚洲一区二区三区 | 天堂资源在线 | 欧美一区二区三区四区视频 | 欧美三级一级片 | 青草视频免费在线观看 | 欧美不卡网| 香蕉啪啪网| 精品国产乱码久久久久久婷婷 | 精品视频91| 香蕉视频黄色在线观看 | 69视频一区 | 中文字幕一区二区三区乱码不卡 | 干b视频在线观看 | 6—12呦国产精品 | 国内自拍小视频 | 性高跟鞋xxxxhd国产电影 | 美女黄视频在线观看 | 欧美片免费网站 | 大地资源高清播放在线观看 | 99久久精品免费看国产免费软件 |