我是wordpress插件开发的新手。我想在有人安装插件并将csv文件中的daata填充到表中时创建一个新表。
这是我创建表的代码:
$sql = "CREATE TABLE $table_name (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`location` varchar(150) NOT NULL,
`slug` varchar(150) NOT NULL,
`population` int(10) unsigned NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8";
$wpdb->query($sql);
运行后,该表已创建。
问题是我发现很难将data.csv填充到表中。
在windows xampp中它正在运行
$current_plugin_dir = dirname(__FILE__);
$current_plugin_dir = str_replace("\\","\\\\",$current_plugin_dir);
$current_plugin_dir = $current_plugin_dir . '\\\\data.csv';
$sql = "LOAD DATA LOCAL INFILE '$current_plugin_dir' INTO TABLE $table_name";
$wpdb->query($sql);
虽然实时服务器不起作用......但是下面的代码可以工作......
$current_plugin_dir = $current_plugin_dir.'/data.csv';
$sql = "LOAD DATA LOCAL INFILE '$current_plugin_dir' INTO TABLE $table_name";
$wpdb->query($sql);
但是在我的ubuntu操作系统中似乎没有人工作..我调试了它似乎跟随查询在ubuntu灯环境上运行
LOAD DATA LOCAL INFILE '/var/www/html/testwp/wp-content/plugins/plugin-name/data.csv' INTO TABLE test_population
并触发了以下错误
1148 - 此MySQL版本
不允许使用命令
在所有平台上加载csv有什么单一方法吗?有什么帮助吗?
答案 0 :(得分:0)
您可以在设置连接时将其指定为附加选项:
mysql -u myuser -p --local-infile yourdatabase
或将其放在my.cnf文件中:
[client]
loose-local-infile=1
这是因为该功能会打开一个安全漏洞,默认情况下处于禁用状态。所以你必须手动启用它,以备你想要使用它。
另一个选择是使用fopen()和通常的sql插入来读取文件。