我有一个 5GB JSON 文件,它是具有固定结构的对象数组:
[
{
"first": "John",
"last": "Doe",
"email": "john.doe@yahoo.com"
},
{
"first": "Anne",
"last": "Ortha",
"email": "anne.ortha@hotmail.com"
},
....
]
Run Code Online (Sandbox Code Playgroud)
我知道我可以尝试使用如何使用 Serde 使用顶级数组反序列化 JSON?中所示的代码来解析此文件。:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
struct User {
first: String,
last: String,
email: String,
}
let users: Vec<User> = serde_json::from_str(file)?;
Run Code Online (Sandbox Code Playgroud)
有多个问题:
User(我不想要这样)我尝试了如何从 Rust 中的文件/流中延迟读取多个 JSON 值?但它会在打印任何内容之前读取整个文件,并在循环内立即打印整个结构。我期待循环中一次有一个对象:
理想情况下,(已解析的)用户对象的解析和处理应该在两个单独的线程/任务/例程中同时发生,或者通过使用通道同时发生。
我正在使用blockchains备份脚本填充数据库backup_2019-05-21.sql,但在 CLI 上运行此命令会显示此错误。
some_user@my_project:~$ docker exec -i mysql_test mysql -uroot -ptestpass Blockchains < /home/some_user/db_backups/backup_2019-05-21.sql mysql: [警告] 在命令行界面上使用密码可能不安全。ERROR 1064 (42000) at line 1:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“mysqldump: [警告]在命令行界面上使用密码可能不安全”附近使用的正确语法,第 1 行读取 unix @->/var/run/docker。 sock:读取:连接被对等方重置
注:backup_2019-05-21.sql文件大小为5G
有人知道具体原因吗?:)