有人可以给我一些关于如何创建PHP脚本以将远程csv文件加载到mySQL表中的指示吗?
我已经使用CSV中的字段和相关类型设置了mySQL表。
我相信如果文件在本地系统上,我可以使用以下内容:
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
最终解决方案将是一个linux服务器,它有一个cronjob,每天凌晨4点运行php脚本。 CSV文件将位于SFTP共享中,该共享将需要登录凭据。不幸的是,它不能放在同一个盒子里。
考虑到下面的西蒙斯评论,我现在正努力让它在本地导入:
$data = $conn->query('LOAD DATA INFILE ' .$filelocation. ' INTO TABLE wl_transactions FIELDS TERMINATED BY ";" IGNORE 1 LINES');
答案 0 :(得分:1)
如果您可以从PHP写入MySQL服务器的本地文件系统,则可以使用PHP curl functions检索远程文件,然后将其保存到本地文件,最后触发LOAD DATA
命令。
答案 1 :(得分: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.';'));