![](/img/trans.png)
[英]MySQL Error 1064 Incorrect Syntax for LOAD DATA LOCAL INFILE
[英]Mysql Error 1064 when using 'SET' keyword in `LOAD DATA LOCAL INFILE` for a blob column
我正在嘗試使用“ LOAD DATA LOCAL INFILE”從文件插入表。 我可以插入其他表,但是包含blob列的表存在問題。
在文件中的二進制大對象值被存儲為十六進制值和每列被分離,
字符。
我正在從這里得到答案
MySQL服務器版本是5.6.44
這是表的定義
CREATE TABLE `tx_bin` (
`hash_id` bigint(20) unsigned NOT NULL,
`block_height` bigint(20) NOT NULL,
`binary` blob NOT NULL,
PRIMARY KEY (`hash_id`, `block_height`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這是我用來插入表格的文件中的樣本值
4,1,01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0420e7494d017f062f503253482fffffffff0100f2052a010000002321021aeaf2f8638a129a3156fbe7e5ef635226b0bafd495ff03afe2c843d7e3a4b51ac00000000
7,2,01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000
10,3,01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0486e7494d0151062f503253482fffffffff0100f2052a01000000232103f6d9ff4c12959445ca5549c811683bf9c88e637b222dd2e0311154c4c85cf423ac00000000
這是我使用的語法
LOAD DATA LOCAL INFILE '/work/bootstrap/10000/tx_bin'
INTO TABLE tx_bin FIELDS TERMINATED BY ','
(hash_id,block_height,@bin)
SET binary=UNHEX(@bin);
我得到的錯誤
錯誤1064(42000):您的SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第1行的'binary = UNHEX(@bin)'附近使用正確的語法
如果我刪除SET binary
則插入成功(但沒有二進制數據)。
LOAD DATA LOCAL INFILE '/work/bootstrap/10000/tx_bin'
INTO TABLE tx_bin FIELDS TERMINATED BY ','
(hash_id,block_height,@bin);
然后我嘗試使用SET,但在其他列上也成功。
LOAD DATA LOCAL INFILE '/work/bootstrap/10000/tx_bin'
INTO TABLE tx_bin FIELDS TERMINATED BY ','
(hash_id,@height,@bin)
SET block_height=@height;
如果我在其他列之后再次添加blob列,它也會給我同樣的錯誤
LOAD DATA LOCAL INFILE '/work/bootstrap/10000/tx_bin'
INTO TABLE tx_bin FIELDS TERMINATED BY ','
(hash_id,@height,@bin)
SET block_height=@height, binary=UNHEX(@bin);
知道我在做什么錯嗎?
BINARY
是MySQL中的保留字 ,在用作字段名稱時需要加引號。
LOAD DATA LOCAL INFILE '/work/bootstrap/10000/tx_bin'
INTO TABLE tx_bin FIELDS TERMINATED BY ','
(hash_id,block_height,@bin)
SET `binary`=UNHEX(@bin);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.