0

场景如下:

  • 我们将表中的二进制列存储在 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
4

0 回答 0