我需要导入一个mysql服务器(5.5)一组大数据,其中一个字段作为blob.按照SELECT INTO OUTFILE和LOAD DATA INFILE的样本,它几乎可以正常工作.但是,我有一个问题:BLOB文件中生成的数据实际上是二进制表示.生成的文件如下所示(第3列代表BLOB):
1,1,"4Vÿ" 2,1,"ª»Ì" 3,1,"Ýîÿ" 4,1,"\"3"
并且使用以下sql语句导入适用于此情况:
LOAD DATA INFILE 'C:/temp/mysql/mysqldump.1.txt' INTO TABLE `test_table` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' ;
我的问题是文本是偶然生成的.如果出现引号,或者换行,或者其他什么,我将需要手动执行转义(即用反斜杠替换它们),我想跳过这一步.
所以,我的问题是:有什么方法可以导入一个文本文件,格式如下(BLOB存储为hexa):
1, 1, 0x123456FF 2, 1, 0xaabbcc 3, 1, 0xddeeff 4, 1, 0x112233
用一个单独的mysql语句?
更新:忘记提及 - 尝试使用LOAD DATA INFILE语句直接导入具有所需格式的文本文件,结果实际上是将文本'0x123456FF'存储在表的BLOB文件中.
Rol*_*and 22
您可以使用LOAD DATA INFILE的SET部分,而不需要0x转义内容:
1, 1, 123456FF
2, 1, aabbcc
3, 1, ddeeff
Run Code Online (Sandbox Code Playgroud)
然后将列分配给变量,然后将列设置为该变量的UNHEXed版本:
LOAD DATA INFILE 'file' INTO TABLE `table` (column1, column2, @var1)
SET column3 = UNHEX(@var1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9629 次 |
最近记录: |