| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3243 人关注过本帖, 1 人收藏
标题:CSV合并的问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 9楼 wube
你這些文檔,記錄結構都不一樣,要怎麽處理?

授人以渔,不授人以鱼。
2015-03-09 13:10
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
在VB版问的只是确认一下是否一定要另外编程来实现而已
实际上执行当然不可能用VB来写
因未考虑到也许要连续开关档300*1000次,怕VB可能会无法负荷

不要選我當版主
2015-03-09 13:12
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
回复 11楼 TonyDeng
全部依序由左往右接,长度全部固定,宽度不一定

不要選我當版主
2015-03-09 13:15
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
最后变成类似这样的CSV档...
https://bbs.bccn.net/thread-441645-1-1.html

不要選我當版主
2015-03-09 13:17
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
全部285个档案的第一行都接在一起,
第二行接在一起
.....
直到最后一行
最后变成一个CSV档

不要選我當版主
2015-03-09 13:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你這個問題,用數據庫處理比較簡單,用C/C++處理,相對工作量較大,尤其是在限制用某種C的情況下。剛看了一下你的數據,每個文件的記錄數不是全部一樣的,這樣橫向拼接,會有某些可以預見的麻煩,你最好弄清楚怎麽處理。我14:00要外出,晚上回來再看看,給你做一個處理程序。

授人以渔,不授人以鱼。
2015-03-09 13:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
衹要在一開始能定下最終文檔的字段數和字段名,是不需要開關文檔那麽多次的。這需要你事先有某種假定,比如某個(第一個)文檔已經包含所有字段,或先掃描一遍所有文檔(同時開啓285個文件句柄是沒有問題的)。

麻煩不在文件的開關上,是在字段的分佈次序和文檔的記錄數不一致上。C/C++不是動態語言,處理這類問題比較麻煩,需要一些小伎倆,如要徹底通用,工作量很大的。


[ 本帖最后由 TonyDeng 于 2015-3-9 13:45 编辑 ]

授人以渔,不授人以鱼。
2015-03-09 13:42
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
字段的分佈次序和文檔的記錄數不一致
看不懂这句是什么意思...

不要選我當版主
2015-03-09 14:29
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
基本上跟这篇类似需求,只是他是两个合并,我是要285个合并.
http://bbs.

不要選我當版主
2015-03-09 14:38
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
土法炼钢搞定了,但是新的问题来了,要怎么动态声明指针阵列?
同时开启285个档案,速度上还免强能够接受,只是若是同时开启1000个档案,不知道会不会有什么异状.
程序代码:
void MergeCSV(int fl,char *Tmp, char *TmpFileNameStr1,int TC)
{
    FILE *stream2,*stream3[300];    //这个地方300怎么改成动态声明?
    int i=0,j=0;
    char TempString[Max_Size]={0},temp[Max_Size]={0};

    stream2 = fopen(TmpFileNameStr1, "a+" );
    for (j=0;j<fl;j++)
    {
        sprintf(TempString,"%s%04d.csv",Tmp,j);
        stream3[j] = fopen( TempString, "r" );
        memset(TempString,0,sizeof(TempString));
    }
    for (i=0;i<(TC+6);i++)
    {
        for (j=0;j<fl;j++)
        {
            if (fgets(temp, Max_Size, stream3[j])!=NULL)
            {
                int ii=strlen(temp);
                temp[ii-1]='\0';
                fprintf(stream2,"%s",temp);
            }
            memset(temp,0,sizeof(temp));
            fflush(stream2);
        }
        fprintf(stream2,"\n");
    }
    for (j=0;j<fl;j++)
        fclose(stream3[j]);

    fclose(stream2);
}

不要選我當版主
2015-03-09 15:45
快速回复:CSV合并的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017357 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved