场景如下:
- 我们将表中的二进制列存储在 CSV 文件中(使用 Pandas “df.to_csv()”)。
- 二进制值以十六进制形式存储在 CSV 文件中
- 文件中存储的值是正确的,这些值可以手动取消十六进制。
- 我们使用此语句上传值:
LOAD DATA LOCAL INFILE 'path/csv_filename.csv' INTO TABLE target_table CHARACTER SET utf8mb4 fields terminated by ',' OPTIONALLY ENCLOSED BY '"' (columnA, columnB, columnC...) SET bin_column_name = UNHEX(bin_column_name)
除二进制列外的所有列均已成功上传。存储在 target_table 中的二进制值似乎被截断,好像只上传了部分信息。target_table 的定义与原来的完全相同。
MariaDB 服务器 (10.5.12) 中的字符集信息:
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mariadb/charsets/
到目前为止,我们已经尝试过:
- 不同的字符集(在语句、连接/客户端和目标表中)
- 使用 BASE64 代替 HEX