2015-03-13 5 views
2

Мое приложение на сервере A и базы данных в другой на B. сервера сервера С тузд OUTFILE в/TMP каталог сервера B. Я хочу, чтобы загрузить этот файл, используя код PHP на сервере APHP загрузить файл с другого сервера

<?php 
    $fullpath = '/tmp/users.csv'; 

    Mysql SELECT ......INTO OUTFILE '$fullpath' 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '\"' 
    ESCAPED BY '\"' 
    LINES TERMINATED BY '\n' 

    $connection = ssh2_connect('serverb', 22); 
    ssh2_auth_password($connection, 'username', 'password'); 

    if(ssh2_scp_recv($connection, $fullpath, $fullpath)) { 
     echo $filepath.' copied to server!!'; 
    } 
    $filename1 = 'users.csv'; 

    $mm_type="application/csv"; 
    header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Cache-Control: public"); 
    header("Content-Description: File Transfer"); 
    header('Content-Type: application/csv; charset=UTF-8'); 
    header('Content-Disposition: attachment; filename="'.$filename1.'"'); 
    header("Content-Transfer-Encoding: binary\n"); 
    readfile($fullpath); 
    exit; 
?> 

с MySQL выберите Outfile файл, сохраненный в сервере B, но не в состоянии загрузить с сервера A, где PHP код работает Привет

+0

Эй, синтаксическая ошибка! Вы не можете выполнить такой запрос? – Raptor

+0

@Raptor; Запрос выполнен правильно, и я получаю файл csv на serverB '/tmp/users.csv'. Ниже приведен пример запроса SELECT 'Имя', 'Фамилия', 'Код пользователя' UNION (SELECT fname, lname, ucode FROM csvfields INTO OUTFILE '$ fullpath' ПОЛЯ, ОГРАНИЧИВАЕМЫЕ ',' ENCLOSED BY ' \ "' ESCAPED BY' \" ' ЛИНИИ, ПРЕКРАЩЕННЫЕ' '\ n') – Aruti

ответ

1

Вы также можете попробовать функцию «fputcsv» для загрузки данных в формате CSV. Вы можете соединиться с вашей базой данных, как вы в вашем приложении

$filename = 'users.csv'; 
header('Content-Type: text/csv; charset=utf-8'); 
header('Content-Disposition: attachment; filename='.$filename.'.csv'); 
ob_clean(); 

$output = fopen('php://output', 'w'); 

fputcsv($output, array('Column1', 'Column2')); 

$exceldata = $this->ModelName->query("SELECT field1, field2 from TableName"); 
// loop over the rows, outputting them 
foreach($exceldata as $exceldataval){ 
fputcsv($output, $exceldataval); 
} 

fclose($output); 
exit; 
+0

Спасибо @Amit Maan, он работает :) – Aruti

0

Вы также можете использовать команду SCP, чтобы переместить файл из SERVERA в ServerB

УПП destination_server_username @ IP-адрес: /path/filename.zip usource_server_username @IP: /path/file.zip

Смежные вопросы