繁体   English   中英

命令行MySQL脚本

[英]Command Line MySQL Script

一直试图找出一些解决方法,然后回到第1方块。

我的托管软件包显然仅从命令行提供了针对PHP,SendMail和Perl的支持软件-但是我需要找出运行SQL脚本的最佳方法,无论它是从命令行作为MySQL脚本(如果可能) ,或者在PHP或Perl脚本中。

我已经在PHP脚本中尝试了以下脚本,但是LOAD DATA LOCAL INFILE阻止其正常运行,因此我为一个更简单的解决方案而烦恼...但是在这个阶段,我会采取任何措施!

<?php
$con = mysqli_connect('xxx.xxx.xxx.xx', 'xxxx-xxxxxxx', 'xxxxxxxxx', 'xxxx-xxxxxxx');
mysqli_query($con, "LOAD DATA LOCAL INFILE 'http://www.mydomain.co.uk/datafeed.csv' REPLACE INTO TABLE product_feed FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS");
mysqli_close($con);

命令行对我来说是很新的,老实说,我只需要知道,因为它是我为更新脚本构造计划任务/计划任务的方式。

谁能帮我吗

您是从哪里运行的? 我假设www.mydomain.co.uk是您的服务器,并且您正在从外部客户端访问它?

LOAD DATALOAD DATA LOCAL之间的主要区别在于,后者在使用复制的文件作为普通LOAD DATA命令继续之前,将文件从客户端复制到服务器中的临时文件。 但是MySQL客户端和服务器都必须显式构建以使其启用 由于这是一个潜在的安全漏洞,因此我非常怀疑服务器是否采用这种方式构建。

两者都不接受HTTP URL-您需要指定路径 如果使用LOAD DATA仅指定裸文件名,则服务器将在默认数据库目录中查找该文件名; 或者如果它是具有目录组件的相对路径,则服务器将其视为相对于数据目录相对路径; 当然,绝对路径是按字面意义使用的。

如何使它起作用,取决于您可以向哪些服务器目录写入,而MySQL服务器也可以读取该服务器目录。 LOAD DATA LOCAL几乎LOAD DATA LOCAL因为您可以自己复制CSV文件并对其进行更多控制。 最可能的候选对象是数据目录,您可以发现正在使用的目录

SHOW VARIABLES WHERE Variable_Name = "datadir"

然后,如果将文件myfile.csv放入此目录,则可以使用

LOAD DATA INFILE "./myfile.csv" ...

使服务器从文件中加载表。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM