【问题标题】:Downloading XML and adding to the database下载 XML 并添加到数据库
【发布时间】:2018-10-31 11:05:09
【问题描述】:

我需要编写一个脚本,它将 XML 从 FTP 复制的文件下载到服务器,该服务器将由该脚本添加到数据库中。问题是我不知道是否可以连接到放置数据库的服务器并将文件复制到可以从中下载它们的文件夹中?

数据库安装在 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);

?>

所以我的问题是:

  1. 我必须在哪里上传文件,以便服务器可以使用 LOAD DATA INFILE?
  2. 如何使用脚本将文件复制到此文件夹?

【问题讨论】:

    标签: php mysql xml


    【解决方案1】:

    当您在 LOAD DATA LOCAL INFILE 命令中使用 LOCAL 关键字时,它将从运行 MySQL 客户端的主机加载文件,如 https://dev.mysql.com/doc/refman/8.0/en/load-data.html 所述:

    如果指定LOCAL,则文件由客户端主机上的客户端程序读取并发送到服务器。该文件可以作为完整路径名给出以指定其确切位置。如果以相对路径名的形式给出,则该名称被解释为相对于启动客户端程序的目录。

    在您的情况下,MySQL 客户端将是运行 php 脚本的主机。该路径必须可由主机访问,并且会自动传输到 MySQL 服务器。

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2018-01-15
      • 2014-05-16
      • 2018-09-12
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多