我需要编写一个脚本,该脚本将从FTP复制的文件中下载XML到服务器,该脚本将把它添加到数据库中。问题是我不知道是否可以连接到放置数据库的服务器并将文件复制到可以从中下载文件的文件夹中?
该数据库已安装在synology MariaDB 10(通过UNIX套接字的localhost)上。
<?php
$ftp_serwer = "xxx";
$ftp_nazwa_uzytkownika = "xxx";
$ftp_haslo = "xxx";
// nawiązanie połączenia lub zakończenie działania skryptu
$conn_id = ftp_connect($ftp_serwer) or die("Nie można połączyć się z $ftp_serwer");
// próba logowania
if (@ftp_login($conn_id, $ftp_nazwa_uzytkownika, $ftp_haslo)) {
echo "Połączony jako $ftp_nazwa_uzytkownika@$ftp_serwer\n";
} else {
echo "Nie można zalogować się jako $ftp_nazwa_uzytkownika\n";
}
// nawiązanie połączenia z baza danych msql
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "zlecenia";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname, 3307);
$conn->set_charset("utf8");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// define some variables
$local_file = 'Z:\htdocs\phpmysql\TEST\CRM\localfile\yahootable.xml';
$server_file = '/TU WGRYWAC DANE/yahootable.xml';
// set up basic connection
$conn_id = ftp_connect($ftp_serwer);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_nazwa_uzytkownika, $ftp_haslo);
// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
} else {
echo "There was a problem\n";
}
$sql = "LOAD DATA LOCAL INFILE
'Z:/htdocs/phpmysql/TEST/CRM/localfile/yahootable.xml'
INTO TABLE
yahootable
CHARACTER SET 'utf8'
LINES STARTING BY '<row>' TERMINATED BY '</row>'
(@tmp)
SET
id = ExtractValue(@tmp, '//id'),
various = ExtractValue(@tmp, '//various'),
message = ExtractValue(@tmp, '//message')
";
// zamknięcie połączenia
ftp_close($conn_id);
mysqli_close($conn);
?>
所以我的问题是:
LOAD DATA INFILE
?答案 0 :(得分:0)
当在LOCAL
命令中使用LOAD DATA LOCAL INFILE
关键字时,它将从运行MySQL客户端的主机上加载文件,如https://dev.mysql.com/doc/refman/8.0/en/load-data.html所述:
如果指定了
LOCAL
,则文件由客户机主机上的客户机程序读取并发送到服务器。可以将文件指定为完整路径名以指定其确切位置。如果指定为相对路径名,则该名称将相对于启动客户端程序的目录进行解释。
您所使用的MySQL客户端将是运行php脚本的主机。该路径必须由那个主机访问,并将自动传输到MySQL服务器。