[英]mysql load_file from client
我想將一個HTML文件插入到MySQL表中,該HTML文件包含許多我不想手動轉義的SQL元字符(例如,單引號)。
我雖然可以使mysql客戶端將文件內容加載到一個變量中,然后簡單地插入該變量,如下所示:
set @result_text = load_file('/tmp/results.html');
INSERT INTO election_results (election_id, result) VALUES (17, @result_text);
但是, load_file的文檔說 ,它將文件加載到服務器上 ,而不是客戶端上。 那對我不起作用。
因此,我的問題是:如何使mysql客戶端將文件加載到變量中?
使用帶有LOCAL
關鍵字的MySQL的LOAD DATA
命令:
LOAD DATA LOCAL INFILE '/tmp/results.html'
INTO TABLE election_results
FIELDS
TERMINATED BY ''
ESCAPED BY ''
LINES
TERMINATED BY ''
(result)
SET election_id = 17
但是,請注意LOAD DATA LOCAL
的安全性問題 。
我已經通過使用以下代碼跳過了錯誤1084:
LOAD 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'作為字段終止符。
不完全是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
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.