我想插入一个HTML文件,其中包含许多我不想手动转义的SQL元字符(例如单引号)到MySQL表中。
我虽然可以让mysql客户端将文件内容加载到变量中,然后简单地插入该变量,这些内容如下:
set @result_text = load_file('/tmp/results.html');
INSERT INTO election_results (election_id, result) VALUES (17, @result_text);
然而,the documentation of load_file says,它将文件加载到服务器上,而不是客户端上。这对我不起作用。
因此我的问题:如何让mysql客户端将文件加载到变量中?
答案 0 :(得分:1)
使用MySQL的LOAD DATA
命令,LOCAL
关键字:
LOAD DATA LOCAL INFILE '/tmp/results.html'
INTO TABLE election_results
FIELDS
TERMINATED BY ''
ESCAPED BY ''
LINES
TERMINATED BY ''
(result)
SET election_id = 17
答案 1 :(得分:0)
我通过使用:
传递了错误1084LOAD DATA LOCAL INFILE '/tmp/results.html'
INTO TABLE election_results
FIELDS
TERMINATED BY '\Z'
ESCAPED BY ''
LINES
TERMINATED BY ''
(result)
SET election_id = 17
请注意' \ Z'作为现场终止者。
答案 2 :(得分:0)
不完全是load_file但在我的情况下工作正常。
考虑这个单行(注意,我在Ubuntu上):
printf "$(cat update_xml.sql)" "$(cat my.xml | sed s/"'"/"\\\'"/g)" | mysql -h myRemoteHost -u me -p***
在update_xml.sql中有:
UPDATE
myTable
SET
myXmlColumn = '%s'
WHERE
...