gpt4 book ai didi

MySQL:使用 LOAD DATA 时将数据压缩在一列中

转载 作者:行者123 更新时间:2023-11-29 17:07:47 25 4
gpt4 key购买 nike

在 MySQL 数据库中,我使用 BLOB字段来存储来自可能很长的文本字符串的一些压缩数据,我有时希望将其显示给我的 Web 应用程序的用户,但永远不会用于搜索或任何其他内容,其基本思想是节省磁盘空间。

我正在尝试使用 LOAD DATA 填充我的表和 tsv 文件。问题是,我正在使用包含文本的表格文件,但其中一列(BLOB一列)需要压缩。

我尝试了以下方法,但没有成功。在此示例中,table_name.tsv tsv 文件包含我要插入 table_name 的数据,我要压缩的文本位于 col4 列中。

mysql -h <host> -u <user> -p <pwd> <db_name>  --execute="LOAD DATA LOCAL INFILE 'table_name.tsv' INTO TABLE table_name(col1, col2, col3, @col4_comp_data) SET col4=COMPRESS(@col4_comp_data) FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n' IGNORE 1 LINES; SHOW WARNINGS"

我得到的错误是:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES' at line 1

知道是否可以在使用 LOAD DATA 加载数据时压缩数据吗? ?

最佳答案

您的语法顺序错误。
LINES TERMINATED BY '\\n' IGNORE 1 LINES 部分需要位于列设置部分之前。

正确的顺序是

BNF(巴科斯-诺尔形式)代码

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]

来源http://dev.mysql.com/doc/refman/8.0/en/load-data.html .

关于MySQL:使用 LOAD DATA 时将数据压缩在一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com