我正在尝试使用“使用MySQL进行维度数据仓库”一书来理解数据仓库。在第2章中,我需要将数据插入MySQL中的表。
我正在尝试此代码
TRUNCATE customer_stg;
LOAD DATA INFILE 'customer2.csv'
INTO TABLE customer_stg
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES(
customer_number,
customer_name,
customer_street_address,
customer_zip_code,
customer_city,
customer_state
);
我在Ubuntu 12.04.2上使用lampp。文件'customer2.csv'已被复制到'/ opt / lampp / var / mysql / dw'文件夹中。 在MySQL中,我使用用户'dwid',密码为'password'。 csv文件的文件权限设置为
-rwxr-xr-x 1 mysql mysql 469 Oct 31 2005 customer2.csv
但我仍然无法加载表格中的数据。可以从用户“root”加载。
答案 0 :(得分:0)
从MySQL 5.5手册页:
LOCAL仅在您的服务器和客户端都已用时才有效 配置为允许它。例如,如果启动了mysqld --local-infile = 0,LOCAL不起作用。请参见第6.1.6节“LOAD DATA LOCAL的安全问题”。
您应该设置选项:
本地的infile = 1
进入my.cnf文件的[mysql]条目或使用--local-infile选项调用mysql客户端:
mysql --local-infile -uroot -pyourpwd yourdbname
您必须确保在[mysqld]部分中定义了相同的参数,以启用“本地infile”功能服务器端。
这是一项安全限制。我从stackoverflow中的其他一些问题中学到了这一点,我找不到链接,我已经保存了答案。希望这会有所帮助。