日韩性视频-久久久蜜桃-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多行合并成一行_数据文件合并与拆分的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 99国产精品久久久久久久 | 美女黄色一级 | 手机看片1024欧美 | 欧美 在线 | 欧美顶级少妇做爰hd | 免费观看日韩毛片 | 精品深夜av无码一区二区老年 | 国产情侣在线播放 | 国产a∨精品一区二区三区仙踪林 | 久色网| 日批免费网站 | 亚洲第一区视频 | 亚洲国产精品人人爽夜夜爽 | 伊人春色影院 | 国产一区二区三区精品视频 | 成人三级做爰av | 粉色视频免费观看 | 老司机深夜福利在线观看 | 亚洲精品日日夜夜 | 久久精品69 | 久草三级 | 日本免费观看视频 | 色就是色欧美 | 日韩精品免费一区二区三区 | 性高潮在线观看 | 九九热这里只有 | 一区二区三区国产精品视频 | 黄色小视频在线观看免费 | 欧美日韩精品一区二区在线播放 | 国产黄色免费看 | 四虎4hu | 在线a视频 | 西欧毛片 | 女女同性女同一区二区三区按摩 | 肥婆大荫蒂欧美另类 | 岛国av中文字幕 | 蜜臀av一区二区三区 | 夜夜操天天 | 竹菊影视一区二区三区 | 国产精品自拍区 | 亚洲视频在线一区二区 | 美女精品久久久 | 欧美大白屁股 | 四虎免费影视 | 欧美gv在线观看 | 天天干 夜夜操 | 久久亚洲一区二区 | 红桃视频黄色 | av片免费 | 日本老太婆做爰视频 | 麻豆短视频 | 日韩精品xxxx| 久久精品伦理 | 小sao货cao死你 | 杨幂一区二区国产精品 | 国产乱淫片视频 | 色欧美视频 | 天堂av网址 | 成人免费在线观看网站 | 天天艹av| 亚洲精品天堂成人片av在线播放 | 激情欧美一区二区三区精品 | 国产成人无码一区二区在线观看 | 日韩精品中文字幕一区 | 九九视频免费 | 97国产在线观看 | 日韩电影一区 | 毛片在线免费观看网址 | 骚av在线 | 久久精品国产网红主播 | 国产欧美一区二区三区在线老狼 | 欧美精品福利视频 | 国产美女无遮挡永久免费 | 五月开心激情 | 国产精品.xx视频.xxtv | 亚洲一二三不卡 | 在线a网站 | 五月综合激情日本mⅴ | 亚洲特黄特色 | 中文字幕一区二区在线播放 | av网站有哪些 | 欧美精品在线观看一区二区 | fee性满足he牲bbw | 国产精品成人无码 | 9999久久久久 | 欲色网站 | 九热精品 | 亚洲一区二区三区在线视频观看 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 国产无限制自拍 | 男男做爰猛烈叫床爽爽小说 | 窝窝视频在线观看 | 2018天天弄 | 日本三级一区 | 色播99| 精品影视| 亚洲在线国产 | 人体写真 福利视频 | 网站免费黄色 |