将OICQ数据转成MYSQL数据



<? 
include("include/dbclass.inc"); //可以用 MYSQL.INC 类代替测试 
$q = new DB_Sql

$db $q->Database//define the database 
mysql_connect('localhost:3306',$q->User,$q->Password); 
?> 

<form method="post" action="<?php echo $PHP_SELF;?>
enctype="multipart/form-data"> 
<input type="file" name="csv_file" 
value="<?php echo $csv_file;?>">&nbsp;&nbsp; 
terminated by <input type="text" name="terminated" 
value="," size=2><p> 
Which table you want to insert ? 
<?php show_table($db,$table); ?><p> 
<input type="submit" name="submit" value="go"> 
</form> 

<?php 

function show_field($db,$table,$num,$selected_field) { 
$result mysql_db_query($db"SHOW KEYS FROM $table") or mysql_die(); 
$primary ""
while (
$row mysql_fetch_array($result)) 
if (
$row["Key_name"] == "PRIMARY"
$primary .= "$row[Column_name], "
$result mysql_db_query($db"SHOW FIELDS FROM $table"); 
if (!
$result) { 
mysql_die(); 

else { 
echo 
"<select name=field$num>n"
while (
$rowmysql_fetch_array($result)) { 
$selected = ($selected_field == $row["Field"]) ? "selected" ""
echo 
"<option value=" $row["Field"] . " $selected>" 
$row["Field"] . "</option>n"

echo 
"</select>nn"



function 
show_table($db,$selected_table) { 
$tables mysql_list_tables($db); 
$num_tables = @mysql_numrows($tables); 
if (
$num_tables == 0) { 
echo 
"no table yet"

else { 
$i 0
echo 
"<select name=table>n"
while (
$i $num_tables) { 
$table mysql_tablename($tables$i); 
$selected = ($selected_table == $table) ? "selected" ""
echo 
"<option value=$table $selected>$table</option>n"
$i++; 

echo 
"</select>nn"



if (
$submit) { 
if(!empty(
$csv_file) && $csv_file != "none") { 
//$csv_file = stripslashes($csv_file); 
$fp fopen($csv_file"r"); 

// show first line of the csv file to select dababase table and its fields 
echo "<form method=post action=$PHP_SELF>"

$csv_data fgetcsv($fp2000"$terminated"); 
$num count($csv_data); 
for ( 
$c=0$c<$num$c++ ) { 

$field_name[$c] = $csv_data[$c]; 
echo 
$field_name[$c] . "&nbsp;&nbsp;n"

$table_field_name "field$c"
show_field($db,$table,$c,$$table_field_name); 
echo 
"<br>"


// copy the tmp file for next use 
$dest "/tmp/csv_file.csv"
copy($csv_file,$dest); 

echo 
"<input type=hidden name=csv_file value=$dest>n" 
"<input type=hidden name=table value=$table>n" 
"<input type=hidden name=terminated value=$terminated>n" 
"<input type=submit name=submit value=ok></form><p>n"

// when click 'ok' button ,start insert data 
if ($submit == "ok") { 
$NO 1
while (
$csv_data fgetcsv($fp2000"$terminated")) { 
//$num = count($csv_data); 
for ( $c=0$c<$num$c++ ) { 

$table_field_name "field$c"
$first_3 substr($$table_field_name03); 
$first_2 substr($$table_field_name02); 
$val_tmp = ($first_3 == "fid" || $first_3 == "int" 
|| $first_2 == "id") ? 
$csv_data[$c] : "'" $csv_data[$c] . "'"
$val .= $val_tmp ","
$var .= $$table_field_name ","

$val substr($val0, -1); 
$var substr($var0, -1); 
$query "INSERT INTO $table ($var) VALUES ($val)"
$val ""
$var ""
$q->query($query); 
echo 
"NO. $NO $query<p>"
$NO++; 

fclose($fp); 




?>