0

有人可以给我一些关于如何创建 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');
4

2 回答 2

1

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

于 2013-10-31T11:39:23.103 回答
0

这就是我让它在 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.';'));
于 2013-10-31T12:12:42.213 回答