473,385 Members | 1,752 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Complex LOAD DATA INFILE

Dear mysql-ians,

I am using mysql 5.0 and I want to load a huge txt-file in my database.
My text file (file.txt) looks like:

col1 col2 col3 ... col200
col1 col2 col3 ... col200
....
col1 col2 col3 ... col200

I now want it to import in a table t1 with two columns (col_nr,
col_val) where col_nr is the number of column (e.g. 2 for col2, 46 for
col46) and col_val are the effective values in my txt-file at the
different columns. The problem is that col_nr is not in the "file.txt"
so I have to assign based on the field number.

I am looking at the LOAD DATA INFILE command, but in the help file I
did not find an answer to my question. I was hoping to do it with:

LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(col_val)
SET col_nr = "how do I do this";

Does anyone has any suggestions or tips to do it differently (with php
perhaps)?

Thanks in advance!

Stef

May 18 '06 #1
6 1995
st***************@agr.kuleuven.ac.be wrote:
Dear mysql-ians,

I am using mysql 5.0 and I want to load a huge txt-file in my
database. My text file (file.txt) looks like:

col1 col2 col3 ... col200
col1 col2 col3 ... col200
...
col1 col2 col3 ... col200

I now want it to import in a table t1 with two columns (col_nr,
col_val) where col_nr is the number of column (e.g. 2 for col2, 46 for
col46) and col_val are the effective values in my txt-file at the
different columns. The problem is that col_nr is not in the "file.txt"
so I have to assign based on the field number.

I am looking at the LOAD DATA INFILE command, but in the help file I
did not find an answer to my question. I was hoping to do it with:

LOAD DATA INFILE 'file.txt'
INTO TABLE t1
(col_val)
SET col_nr = "how do I do this";

Does anyone has any suggestions or tips to do it differently (with php
perhaps)?

Thanks in advance!

Stef


Each row in the text document has different values for the column number,
yes? So the table will have lots of rows with col_nr = 3 and different
values in col_var? Also how are the columns delimited in the text file?
May 18 '06 #2
Paul Lautman schreef:
Each row in the text document has different values for the column number,
yes? So the table will have lots of rows with col_nr = 3 and different
values in col_var?
Indeed my table has 270 columns and the values for every field for
every row are different. Below you can find a small extract of my
file.txt (with only 3 columns and 8 rows).

38 61 1
35 64 1
35 64 1
41 59 0
39 61 0
42 58 0
28 72 0
36 64 0
Also how are the columns delimited in the text file?


My text-file is organised in a fixed length fomat for every field (as
you can see in the extract).

I also see that the SET command is only valid from MySQL 5.0.3 and I
just donwloaded 5.0.21 so I assume the SET will not work anyway. Do you
have other suggestions?

For your information: my text file contains al lot of info (270 fields
X 2M records).

Thanks in advance,
Stef

May 18 '06 #3
Just to clarify. As I understand it, you want to take the file and
rearrange it like this (I'm using your sample data):

COL_NR | VALUE
1 | 38
1 | 35
1 | 35
1 | 41
1 | 39
1 | 42
1 | 28
1 | 36
2 | 61
2 | etc, etc.

So maybe your table should have a 3rd column, or, more precisely a
'1st' column which will hold the key to the table - like this:

id | col_nr | value
1 | 1 | 38
2 | 1 | 35
3 | 1 | 35
4 | 1 | etc, etc.

As for getting the data into the table, I'm a bit stuck. I think that
the PHP solution might be the way to go - with a loop that counts to
270 for instance.

May 18 '06 #4
st***************@agr.kuleuven.ac.be wrote:
Paul Lautman schreef:
Each row in the text document has different values for the column
number, yes? So the table will have lots of rows with col_nr = 3 and
different values in col_var?


Indeed my table has 270 columns and the values for every field for
every row are different. Below you can find a small extract of my
file.txt (with only 3 columns and 8 rows).

38 61 1
35 64 1
35 64 1
41 59 0
39 61 0
42 58 0
28 72 0
36 64 0
Also how are the columns delimited in the text file?


My text-file is organised in a fixed length fomat for every field (as
you can see in the extract).

I also see that the SET command is only valid from MySQL 5.0.3 and I
just donwloaded 5.0.21 so I assume the SET will not work anyway. Do
you have other suggestions?

For your information: my text file contains al lot of info (270 fields
X 2M records).

Thanks in advance,
Stef


When I used to need to do this sort of things back when I worked for IBM, I
would always turn to PIPELINEs to change that file into one that would load
into the database (actually if putting into DB/2 I would use the PIPELINEs
DB/2 device driver to maipulate the data and feed it straight into the
database using INSERT statements created in the PIPELINE).

Datamystic's .com TextPipe product enables you to do this on a PC.

However, even without PIPELINEs, I would still be tempted to preprocess your
file using whatever came to hand (REXX, VB, VBA, PHP, PERL, ...) to make it
look like:

1,38
1,35
1,35
1,41
1,39
1,42
1,28
1,36
2,61
2,64
2,64
2,59
2,61
2,58
2,72
2,64
3,1
3,1
3,1
3,0
3,0
3,0
3,0
3,0
Which could then be loaded simply into the database. Is every field the same
length, or do they vary and is there always at least one space between the
fields, or do some run into each other?
May 18 '06 #5
st***************@agr.kuleuven.ac.be wrote:
I also see that the SET command is only valid from MySQL 5.0.3 and I
just donwloaded 5.0.21 so I assume the SET will not work anyway. Do you
have other suggestions?


5.0.21 is a later release than 5.0.3, and should be a superset of the
features in 5.0.3. See the sequence of releases here:
http://dev.mysql.com/doc/refman/5.0/en/news-5-0-x.html

Regards,
Bill K.
May 18 '06 #6
st***************@agr.kuleuven.ac.be wrote:
Dear mysql-ians,

I am using mysql 5.0 and I want to load a huge txt-file in my database.
My text file (file.txt) looks like:

col1 col2 col3 ... col200
col1 col2 col3 ... col200
...
col1 col2 col3 ... col200

I now want it to import in a table t1 with two columns (col_nr,
col_val) where col_nr is the number of column (e.g. 2 for col2, 46 for
col46) and col_val are the effective values in my txt-file at the
different columns. The problem is that col_nr is not in the "file.txt"
so I have to assign based on the field number.


One solution would be to do it in two steps. Create a new table with
200 columns, load the data from the file, and then use SQL to copy the
values fom that table to the two-column destination table.

CREATE TABLE t1_wide( col1 CHAR(3), col2 CHAR(3), col3 CHAR(3), ...
col200 CHAR(3));
LOAD DATA INFILE INTO TABLE t1_wide FIELDS TERMINATED BY ' ';
INSERT INTO t1 SELECT 1, col1 FROM t1_wide;
INSERT INTO t1 SELECT 2, col2 FROM t1_wide;
INSERT INTO t1 SELECT 3, col3 FROM t1_wide;
....
INSERT INTO t1 SELECT 200, col200 FROM t1_wide;

Another solution would be to write a custom application in your favorite
programming language to parse the text file and execute the appropriate
INSERT statements to load the data.

Regards,
Bill K.
May 18 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Pieter Van Waeyenberge | last post by:
Hello i have most recent php & mysql versions running on a linuxmachine i want to use LOAD DATA LOCAL INFILE and pass it from php to mysql. - the file i load is given with full path and the...
14
by: Bruce A. Julseth | last post by:
When I execute this SQL statement in my PHP code, I get an error "File '.\Address.txt' not found (Errcode: 2)" $File = addslashes(".\Address.txt"); $SQL = "Load Data InFile \"" . $File . "\"...
3
by: Otto | last post by:
Hello to all I have a problem how to write correctly a PHP string. I did the following import with the help of PHPMyAdmin: Nombre d'enregistrements insérés : 364 (traitement: 0.0553 sec.)...
3
by: hall | last post by:
I have a problem with my design of a templatized class. I'm trying to figure out how to load and save the data inside it, but can't. My class looks like this ------------------------------------...
0
by: Donald Tyler | last post by:
Then the only way you can do it that I can think of is to write a PHP script to do basically what PHPMyAdmin is trying to do but without the LOCAL in there. However to do that you would need to...
1
by: Jami Bradley | last post by:
HI all, For the past several months we have been using LOAD DATA LOCAL INFILE to bulk load tables within Perl modules. Recently, someone thought it would be a good idea to upgrade the Solaris...
1
by: Ray in HK | last post by:
What are the differences between LOAD DATA INFILE and LOAD DATA LOCAL INFILE ? I found some web hosting company do not allow using LOAD DATA INFILE but allow LOAD DATA LOCAL INFILE. The reason...
3
by: nsh | last post by:
mailing.database.mysql, comp.lang.php subject: does "LOAD DATA" EVER work?!? I've tried EVERYTHING! version info: my isp is running my web page on a linux box with php ver. 4.4.1 according to...
0
by: lanesbalik | last post by:
hi all, right now i'm trying to migrate from db2 running under linux to mysql v5.1. i manage to export out the db2 structure & data into a del (ascii) file. but when i try to load the data...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.