Reply to Mysql & php & Load Data Infiles

Your name:

Reply:


Posted by Vizion on 11/07/05 05:42

While I think this is primarily a mysql syntax problem I have asked on the
mysql forum but not got a reply. I am trying using php to set up a system for
loading a new data base using the Load Data Infile statement. I could not get
it to work properly with php so I thought I would try some command line test.

Does anyone know the loaction of a suitable php script that would handle a
list of files and tables for loading into a database (preferably doing an
initial dummy run using temporary tables with an error report). If not when I
get this wretched syntax issue solved I guess I might have one available
fairly soon.

Here are my notes:

This exercise was a test in preparation for a plan to use Load Data Infile for
initallising a new database comprising over 80 tables. The database currently
has no data. The first field is auto-increment.

What am I doing wrong here?

If I cannot do it using Load Data Infile what alternatives would you suggest?

___________________________________________________________
Here is mysql command line dialogue on a win XP development machine:
____________________________________________________________
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 85 to server version: 5.0.13-rc-nt-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use NewBuddies;
Database changed

mysql> load data local infile
'E:/Development/LBuddies/Documemntation/lbcm_diet_
types.txt' REPLACE into table lbcm_diet_types fields terminated by ','
ENCLOSED
by '"';
ERROR 1265 (01000): Data truncated for column 'Help' at row 1
mysql> describe lbcm_diet_types;
+-----------------+-------------+------+-----+-------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+-------------+----------------+
| Diet_Type_ID | int(11) | NO | PRI | NULL | auto_increment |
| Diet_Type_Title | varchar(30) | NO | UNI | Enter Title | |
| Diet_Type_Descr | text | NO | | | |
| Help | int(11) | NO | | 1 | |
+-----------------+-------------+------+-----+-------------+----------------+
4 rows in set (0.01 sec)

mysql> select * from lbcm_diet_types;
Empty set (0.00 sec)

mysql>
_______________________________________________________________________________
Here is the content of the first file created as a text file using editor
macromedia:
_______________________________________________________________________________

"1","Unlimited","Anything goes","1"
"2","Lacto-Vegetarian","Vegetarian consuming milk products, no meat, no
fish","1"
"3","Fish_Lacto-Vegetarian","Lacto Vegetarian plus fish","1"
I then realized my obvious mistake two "'"s in the third field on line two. I
removed "REPLACE" from the command and ran it again:

mysql> load data local infile
'E:/Development/LBuddies/Documemntation/lbcm_diet_
types.txt' into table lbcm_diet_types fields terminated by ',' ENCLOSED by
'"';

Query OK, 2 rows affected, 3 warnings (0.00 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 3

mysql> select * from lbcm_diet_types;
+--------------+-----------------------+----------------------------+------+
| Diet_Type_ID | Diet_Type_Title | Diet_Type_Descr | Help |
+--------------+-----------------------+----------------------------+------+
| 1 | Unlimited | Anything goes | 1 |
| 3 | Fish_Lacto-Vegetarian | Lacto Vegetarian plus fish | 0 |
+--------------+-----------------------+----------------------------+------+
2 rows in set (0.00 sec)

/* OK we have progress BUT */
/*What happened to line 2? */
/* Why 0 for the help ID on line 3? */


/* So I amended the file to read: */

"4","Diabetic","See Diet Sheet","1"
"5","Glutenfree","No wheat products or other glutenous grains","1"
"6","Nut allergic","Avoid all nut products","1"

/* and with the command:*/

mysql> load data local infile
'E:/Development/LBuddies/Documemntation/lbcm_diet_
types.txt' into table lbcm_diet_types fields terminated by ',' ENCLOSED by
'"';

Query OK, 2 rows affected, 3 warnings (0.00 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 3

/* I got:*/
mysql> select * from lbcm_diet_types;
+--------------+-----------------------+----------------------------+------+
| Diet_Type_ID | Diet_Type_Title | Diet_Type_Descr | Help |
+--------------+-----------------------+----------------------------+------+
| 1 | Unlimited | Anything goes | 1 |
| 3 | Fish_Lacto-Vegetarian | Lacto Vegetarian plus fish | 0 |
| 4 | Diabetic | See Diet Sheet | 1 |
| 6 | Nut allergic | Avoid all nut products | 0 |
+--------------+-----------------------+----------------------------+------+
4 rows in set (0.00 sec)

mysql>
/* showing that the second line from this file is again being dropped and the
last line gets 0 for help! - I must be missing something obvious but I am
damned if I can see it <groans>

/* So I realize it might be due to the windows CR/LF oddity therefore I try:
*/

mysql> load data local infile
'E:/Development/LBuddies/Documemntation/lbcm_diet_
types.txt' into table lbcm_diet_types fields terminated by ',' ENCLOSED by
'"'L
ines terminated by '\r\n';

Query OK, 1 row affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 2 Warnings: 0

/* This sounds more promising */

mysql> select * from lbcm_diet_types;
+--------------+-----------------------+----------------------------------------
-----+------+
| Diet_Type_ID | Diet_Type_Title | Diet_Type_Descr
| Help |
+--------------+-----------------------+----------------------------------------
-----+------+
| 1 | Unlimited | Anything goes
| 1 |
| 3 | Fish_Lacto-Vegetarian | Lacto Vegetarian plus fish
| 0 |
| 4 | Diabetic | See Diet Sheet
| 1 |
| 5 | Glutenfree | No wheat products or other glutenous gr
ains | 1 |
| 6 | Nut allergic | Avoid all nut products
| 0 |
+--------------+-----------------------+----------------------------------------
-----+------+
5 rows in set (0.00 sec)

/* Part of the problem solved - but what about those darned zeros? */

Any ideas?

Thanks in advance

david

--
40 yrs navigating and computing in blue waters.
English Owner & Captain of British Registered 60' bluewater Ketch S/V Taurus.
Currently in San Diego, CA. Sailing bound for Europe via Panama Canal after
completing engineroom refit.

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация