Fixed-length text file to database script

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • ssharpjr@gmail.com

    Fixed-length text file to database script

    Hi Guys,

    I'm new to Python (mostly) and I'm wanting to use it for a new project
    I'm faced with.

    I have a machine (PLC) that is dumping its test results into a fixed-
    length text file. I need to pull this data into a database (MySQL
    most likely) so that I can access it with Crystal Reports to create
    daily reports for my engineers.

    I've been reading the Python manual for about a week now and I'm
    learning a lot. Unfortunately, I was given a deadline today that I
    cannot meet without a little help.

    I need to know how to write a script that will DAILY pull this text
    file into a MySQL database.

    Can anyone show me how to do this?

    Thanks

    Stacey
  • Larry Bates

    #2
    Re: Fixed-length text file to database script

    ssharpjr@gmail. com wrote:
    Hi Guys,
    >
    I'm new to Python (mostly) and I'm wanting to use it for a new project
    I'm faced with.
    >
    I have a machine (PLC) that is dumping its test results into a fixed-
    length text file. I need to pull this data into a database (MySQL
    most likely) so that I can access it with Crystal Reports to create
    daily reports for my engineers.
    >
    I've been reading the Python manual for about a week now and I'm
    learning a lot. Unfortunately, I was given a deadline today that I
    cannot meet without a little help.
    >
    I need to know how to write a script that will DAILY pull this text
    file into a MySQL database.
    >
    Can anyone show me how to do this?
    >
    Thanks
    >
    Stacey
    Just use the built in import SQL statement to import the information. You don't
    really need a Python script. import can handle fixed field records (as well as
    CSV, etc.).

    -Larry

    Comment

    • =?ISO-8859-1?Q?Michael_Str=F6der?=

      #3
      Re: Fixed-length text file to database script

      Larry Bates wrote:
      ssharpjr@gmail. com wrote:
      >I have a machine (PLC) that is dumping its test results into a fixed-
      >length text file. I need to pull this data into a database (MySQL
      >most likely) so that I can access it with Crystal Reports to create
      >daily reports for my engineers.
      >[..]
      >I need to know how to write a script that will DAILY pull this text
      >file into a MySQL database.
      >
      Just use the built in import SQL statement to import the information.
      You don't really need a Python script. import can handle fixed field
      records (as well as CSV, etc.).
      If the input data has to be pre-processed before storing it into the
      database a Python script would be needed.

      Just in case somebody needs a module for reading fixed-length files in
      the spirit of module csv:



      For the MySQL part:


      Ciao, Michael.

      Comment

      • Larry Bates

        #4
        Re: Fixed-length text file to database script

        Michael Ströder wrote:
        Larry Bates wrote:
        >ssharpjr@gmail. com wrote:
        >>I have a machine (PLC) that is dumping its test results into a fixed-
        >>length text file. I need to pull this data into a database (MySQL
        >>most likely) so that I can access it with Crystal Reports to create
        >>daily reports for my engineers.
        >>[..]
        >>I need to know how to write a script that will DAILY pull this text
        >>file into a MySQL database.
        >>
        >Just use the built in import SQL statement to import the information.
        >You don't really need a Python script. import can handle fixed field
        >records (as well as CSV, etc.).
        >
        If the input data has to be pre-processed before storing it into the
        database a Python script would be needed.
        >
        Just in case somebody needs a module for reading fixed-length files in
        the spirit of module csv:
        >

        >
        For the MySQL part:

        >
        Ciao, Michael.
        While you are correct, that is not what the OP asked. There is no reference to
        processing data prior to insertion into MySQL database. Also the OP said they
        had a 1 day deadline.

        -Larry

        Comment

        • Eric Wertman

          #5
          Re: Fixed-length text file to database script

          I have a machine (PLC) that is dumping its test results into a fixed-
          length text file.


          While it has nothing to do with python, I found that creating a MySQL
          table with the proper fixed length char() fields and using 'load data
          infile' was the easiest way to deal with that sort of scenario. The
          python script is the secondary part, that handles the normalization
          and proper typing of the first table to the second, permanent storage
          area. But in this case, the more advanced bits are the database and
          SQL details, and python is just a very convenient way to build the SQL
          statements and execute them.

          I'm really not sure what the best way to deal with fixed length data
          is in python. I might define a list with the field lengths and use a
          string slicing to get the items.. as a first thought:

          myfile = '/somewhere/somefile.txt'
          sizes = [16,4,8,8,8]

          fd = open(myfile,r)

          for line in fd.readlines() :

          idx1 = 0
          for l in sizes :

          Comment

          • Eric Wertman

            #6
            Re: Fixed-length text file to database script

            Sorry, didn't get to finish my script. Have to figure out the deal
            with gmail and the tab key someday.

            myfile = '/somewhere/somefile.txt'
            sizes = [16,4,8,8,8]

            fd = open(myfile,r)

            data = []
            for line in fd.readlines() :
            a = []
            idx1 = 0
            for l in sizes :
            idx2 = idx1 + l
            a.append(line[idx1:idx2])
            idx1 += l
            data.append(a)

            fd.close()
            print data

            This isn't tested, and there are probably more elegant ways to do it,
            but for quick and dirty I think it should work.

            Comment

            • =?ISO-8859-1?Q?Michael_Str=F6der?=

              #7
              Re: Fixed-length text file to database script

              Larry Bates wrote:
              While you are correct, that is not what the OP asked. There is no
              reference to processing data prior to insertion into MySQL database.
              Also the OP said they had a 1 day deadline.
              Larry, having a bad day?

              I'm confident that the OP is able to sort out *himself* what he needs.
              Also the 1 day deadline would not be an obstacle. Would it for you?

              Ciao, Michael.

              Comment

              Working...