There are many ways to approach this.  How are you receiving the IP data?  Are 
you reading a file or other stream or are you trying to process the table 
creation by reading a column from a previously populated table through a select 
statement?

The functions, inet_ntoa() and inet_addr(), are part of most networking 
libraries. These are the common functions to convert dotted quad notation. If 
you wanted to write you own function, an IPv4 address is broken down as follows:

AAA.BBB.CCC.DDD
  \   \   \   \
    \   \   \   DDD
      \   \   CCC x CCC
        \   BBB x BBB x BBB
          AAA x AAA x AAA x AAA

Add the results and you have your unique 32bit number. 

eg. 10.10.10.1 = 10,000 + 1,000 + 100 + 1
               = 11,101


If you are not able to pre-process (scrub) the incoming data programmatically, 
you would need to create a UDF in MySQL to perform the conversion, or, 
alternatively, if you want to use MySQL SELECT statement as-is could replace 
the 'period' with an 'underscore' using MySQL's built-in string functions like 
so:

Assumptions: Reading IP address from an existing table named IP_Addresses with 
a column named ip_address and a column named status.

    SELECT  "CREATE TABLE ",REPLACE(ip_address,'.','_'), " [insert create 
options here]" FROM IP_Addresses WHERE status ="ACTIVE"

You would obviously add your "CREATE TABLE" options and "INTO OUTFILE" options 
as needed.
This would be an alternative to converting IPv4 to 32bit Integer.

I hope this helps...

If at all possible, it is probably best to continue in the MySQL list, there 
are some pretty clever people out there

Pat...

[EMAIL PROTECTED]
CocoNet Corporation
SW Florida's First ISP
825 SE 47th Terrace
Cape Coral, FL 33904

  ----- Original Message ----- 
  From: Chance Ellis 
  To: Patrick 
  Sent: Monday, October 03, 2005 2:22 PM
  Subject: Re: Table names with periods


  Patrick,

  I have been trying to figure out how I can convert an IP address to a 32bit 
integer within a SQL create statement.

  Is this possible or am I thinking about this all wrong? The input I am given 
is a straight IP address. I have no way of modifying it other than some option 
in the SQL create statement is possible. I want to create a new table for each 
IP address. Without getting too much into the details, these are my 
requirements and I have been wasting alot of time trying to figure out how to 
change this string in the create statement. 

  Any help you can provide is greatly appreciated.

  Thanks!

  Chance


   
  On 9/28/05, Patrick <[EMAIL PROTECTED]> wrote: 
    Historically any form of punctuation, parameter delimiter, or filepath
    delimiter in either a database name, field or column name, file or table 
    name would not be recommended; even if the RDBMS or File Handler allows it.

    If you are able to stick to alphanumeric characters using underscores
    characters if needed for clarity, you go a long way for portability across 
    various operating systems. Also, IPv4 addresses are readily converted to
    single 32bit integers that minimize the need for dotted quartets.

    Early versions of MySQL allowed periods.  This caused OS incompatibility 
    issues.  To my knowledge this was fixed prior to version 3 and you are no
    longer allowed periods in database or table names.  This, in my thinking, is
    a good thing by assuring greater portability and easier migration. 

    I hope this helps.

    Pat...

    [EMAIL PROTECTED]
    CocoNet Corporation
    SW Florida's First ISP
    825 SE 47th Terrace
    Cape Coral, FL 33904


Reply via email to