我正在为一家超市创建一个erp工具。店主在两个不同的地方有两家超市。因此,为了管理超市,本地数据库(mysql)应该与web服务器同步。目前,我正在使用以下c代码导出表的所有记录( sales_products
)从我的数据库中,通过使用列筛选记录 added_on
以及 last_updated
. 我的数据库包含20多个表和更多记录。
private void button1_Click(object sender, EventArgs e)
{
string json = string.Empty;
List<object> objects = new List<object>();
MySqlConnection _dbConnection = new MySqlConnection("Server = localhost; Database = app_erp_suneka; Uid = root; Pwd = ;");
{
_dbConnection.Open();// .Open();
using (MySqlCommand command = _dbConnection.CreateCommand())
{
command.CommandText = "SELECT * FROM sales_products";
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
IDictionary<string, object> record = new Dictionary<string, object>();
for (int i = 0; i < reader.FieldCount; i++)
{
record.Add(reader.GetName(i), reader[i]);
}
objects.Add(record);
}
}
}
}
json = JsonConvert.SerializeObject(objects);
using (StreamWriter sw = new StreamWriter(File.Create(@"C:\Users\SAKTHY-PC\Desktop\path.json")))// "C:\\path\\file.json")))
{
sw.Write(json);
}
}
我的问题是:
如何将所有记录从导出到json文件 all tables
使用c#?
2条答案
按热度按时间7qhs6swi1#
@布拉德利·格兰杰,很高兴听到。但我不能保证,我的本地数据库一直有最少的记录使用jsonserializer。在功能时间(如新年或圣诞节…),将有更多的交易,所以数据库将巨大的。
sdnqo3pr2#
json只有有限的数据类型(字符串、浮点数、布尔值、,
null
); 将mysql数据导出为json可能会导致精度下降(因为DATETIME
,TIMESTAMP
,GUID
,BLOB
等,将必须转换为字符串)。但是,如果您仍然希望将数据库导出为json,首先需要找到数据库中的所有表(通过查询
information_schema.tables
表),然后遍历每个表,选择所有行并将它们转储到json。因为这可能是大量的数据,为了避免内存不足,您需要将结果流式传输到输出文件(而不是在内存中创建大量对象,然后将它们转换为json)。这需要使用低级别的json编写api,因此您需要确保WriteStartObject
以及WriteEndObject
调用正确配对以创建有效的json。以下程序段演示了此技术: