2013-03-05 39 views
1

我是PHP的新手,并且我没有很好的语法和原则。 我有这样的代码:没有一个字段的MySQL表导出

function exportFromTransbase($table_name) { 
//$odbc_query = "SELECT * FROM " . $table_name. " WHERE ((CDS_CTM subrange(248 cast integer) = 1) AND (CDS_LNG_ID = 16))"; 
$odbc_query = "SELECT * FROM " . $table_name. ""; 

$data = odbc_exec($this->odbc_id, $odbc_query); 
odbc_longreadlen($data, 10485760); 
$oufile=fopen($table_name.".sql", 'w') or die("error writing file"); 

    $q1='INSERT INTO `' . substr($table_name, 4) . '` VALUES'; 
    fwrite($oufile, $q1); 

while($row = odbc_fetch_array($data)) 
{ 

foreach($row as $key => $value) { 
$keys[] = "`" . $key . "`"; 
if ($value == ""){ 
    $value = 'NULL'; 
$values[] = "" . mysql_real_escape_string($value) . ""; 
} 
else{ 
    $values[] = "'" . mysql_real_escape_string($value) . "'"; 
} 
//echo "\n \n ololo ".$value; 

} 


$mysql_query = "\n (".implode(",", $values).")," ; 
fwrite($oufile, $mysql_query); 
//mysql_query($mysql_query); 
set_time_limit(0); 
unset($keys); 
unset($values); 
unset($row); 
} 
$stat = fstat($oufile); 
ftruncate($oufile, $stat['size']-1); 
fseek($oufile, 0, SEEK_END); 
    fwrite($oufile, ";".$r); 
//} while ($r < 5); 
fclose($oufile); 
    if ($mysql_query){ 
     print "Ýêñïîðò äàííûõ èç òàáëèöû " . $table_name . " çàâåðøåí!"; 
     //strtolower(substr($table_name, 4)) 
    } 
} 

什么,在哪里我需要定制的,让我导出所有表字段除一人外,例如所谓的大小,我必须在数据库中插入是这一领域的空....

此外,如果它很容易,如何分割我的SQL查询分批5000行?那么插入(5000行),然后插入另一张5000 ....

但首先我需要导出所有领域,除一人外......

回答

0

据我所知,这是不可能的。

您可以简单地使用:

SELECT field1, field2, field3, field4 FROM table 

Select all columns except one in MySQL?

如果你有你的table那么你只能使用*更多的领域。

截至insert的时间,你可以做一个conditionignores你不想在new tablefield

-1

你可以使用

"select * from {table} where {sth} != {condition}" 

然后你就可以取所有数据除外。一个人是根据你的情况呕吐的。 同时,如果您想要以5000插入,您可以一次读取5000行并插入。

相关问题