将远程CSV导入mySQL表?

时间:2013-10-31 11:19:56

标签: php mysql csv

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

2 个答案:

答案 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.';'));