我现在要读取一个Metaphor_Trans_2002.FMT格式的文件,文件内容如下:
FILE_NAME 'Metaphor_Trans.fil'
gfghjhgkjhkjhkjgljklk;fdsfg
fdstgfdhgfjhgkjhlkjl;l;'stgd
gdsgfhygjkhghukjlkjlouioyukj
RECORD_LENGTH 55 SKIP 0 ASCII  
Trans_Date     DATE        1  10   PICTURE "MM/DD/YYYY"  
INVOICE        ASCII      11   8   WIDTH 11  
PRODCLS        ASCII      19   2    
PRODNO         ASCII      21   9    
QTY            NUMERIC    30   8 0  
AMOUNT         NUMERIC    38  18 2  
我想要把Metaphor_Trans作为数据库的表名,而Trans_Date,INVOICE,PRODCLS ,PRODNO,QTY ,AMOUNT是该表的字段
名;而DATE,ASCII ,NUMERIC是字段的数据类型。读取该文件,并在数据库中创建这个表。

解决方案 »

  1.   

    $arr = file('Metaphor_Trans_2002.FMT');
    $arr是数组,你根据explode来进行分割获取数据在进行其他操作就行了
      

  2.   

    楼上的,当文件读到RECORD_LENGTH 55 SKIP 0 ASCII这句时,你怎么知道下面的语句是字段名和数据类型,并创建表。
      

  3.   

    根据他的位置或者他的首字符串来判断,实际应用中不可能出现楼主那样的数据,都是databasename ...这种形式的
      

  4.   

    例如:
    databasename basename
    tablename tname
    cloumn id name sex age
    ...
      

  5.   

    我暂且叫你楼上的。你说,根据他的位置或者他的首字符串来判断。是不是根据RECORD_LENGTH 55 SKIP 0 ASCII   这句来判断?然后用explode去处理其后的语句?
      

  6.   


    $con=file_get_contents("Metaphor_Trans_2002.FMT");
    $con=substr($con,strpos($con,"Trans_Date"));//截到的都是参数了
      

  7.   

    6楼的方法太死了,最好是活的。也许第一个字段名并不是Trans_Date
      

  8.   

    file读出文件,每行为数组的一个元素,然后explode分给每个元素(循环),然后根据这些数据来进行逆想要的操作,文件中的内容你最了解,所以想要得到对应形式的数据并不难
      

  9.   

    这样的文件本身就该是由人工干预的,他要在文件中加入数据库字段怎么都不加个界定符,比如单独一行{sentense}
    下边以{/sentense}结尾
    否则便从格式上截取吧,正则什么的都可以,但奉劝一句,实现起来不难,意义真不大
      

  10.   

    你自己是怎么判断Trans_Date DATE 1 10 PICTURE "MM/DD/YYYY"  这行是一个字段的?自己总结一下文件的格式,和客户那边熟悉该文件格式的人沟通一下,找出尽可能通用的做法.你这里只有一个文件,我们是无法总结出规律的,你要和客户沟通(发现规律或者定下规矩)