将远程 CSV 导入 mySQL 表


Import remote CSV to mySQL table?

有人可以给我一些关于如何创建PHP脚本以将远程csv文件加载到mySQL表中的指示吗?

我已经使用 CSV 中的字段和相关类型设置了 mySQL 表。

我相信如果文件在本地系统上,我可以使用以下内容:

LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

最终的解决方案将是一个linux服务器,它有一个cronjob,可以在每天早上4点运行php脚本。 CSV 文件将位于需要登录凭据的 SFTP 共享中。 不幸的是,它不能放在同一个盒子上。

考虑到Simons下面的评论,我现在正在努力让它在本地导入:

$data = $conn->query('LOAD DATA INFILE ' .$filelocation. ' INTO TABLE wl_transactions FIELDS TERMINATED BY ";" IGNORE 1 LINES');

如果可以从 PHP 写入 MySQL 服务器的本地文件系统,则可以使用 PHP curl 函数检索远程文件,然后将其保存到本地文件,最后触发 LOAD DATA 命令。

这就是我让它在WordPress插件环境中工作的方式,希望它能对你有所帮助。

我首先创建了一个表单,用户可以在其中选择 csv 文件并选择其他设置。

这些设置位于$this>csv_settings数组中

if(isset($this->csv_settings['ignore'])):
    $ignore = "IGNORE 1 LINES ({{The columns to ignore}})";
else:
    $this->csv_settings['ignore'] = NULL;
endif;
/** @var wpdb $wpdb */
global $wpdb;
$result = $wpdb->query($wpdb->prepare('load data local infile ''$this->path_to_file'' into table {{your table name}} fields terminated by ''' . $this->csv_settings['terminated'] . ''' enclosed by ''' . $this->csv_settings['enclosed'] . ''' lines terminated by ''' . $this->csv_settings['lines'] . ''' '. $ignore.';'));