簡體   English   中英

來自客戶端的mysql load_file

[英]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客戶端將文件加載到變量中?

注意: 這些 並不 適用於這里,因為他們提到LOAD_FILE只能在服務器上。 我知道

使用帶有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM