簡體   English   中英

當在`LOAD DATA LOCAL INFILE`中使用'SET'關鍵字作為Blob列時出現Mysql錯誤1064

[英]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.

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