2 回答

TA贡献1868条经验 获得超4个赞
工作代码:从 select ... for json auto 发送数据时,似乎 sql server 会自动吐出一定大小的行。但是行尾没有crlf。所以file.write方法可以不断的把字符串串联起来,在文件中形成一个大的单行字符串,就是有效的json文件。我之前的代码使用了 writeline,它可能在每个字符串的末尾添加了 crlf。关键是 using (file) 部分,否则会看到输出文件被截断,这是我原帖中的问题。
public void Main()
{
ConnectionManager cm;
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"e:\jsontest"))
{
System.Data.SqlClient.SqlConnection sqlConn;
System.Data.SqlClient.SqlCommand sqlComm;
cm = Dts.Connections["crm_vm_2017_cs_dotnet"];
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);
sqlComm = new System.Data.SqlClient.SqlCommand("select * from JJVCProduct for json auto", sqlConn);
System.Data.SqlClient.SqlDataReader reader = sqlComm.ExecuteReader();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
while (reader.Read())
{
file.Write(reader.GetValue(0).ToString());
}
}
finally
{
reader.Close();
}
cm.ReleaseConnection(sqlConn);
Dts.TaskResult = (int)ScriptResults.Success;
}
}

TA贡献2011条经验 获得超2个赞
解决方法
您可以for json auto
从 SQL 命令中删除部分并将数据导入 DataTable,然后将 DataTable 导出到 Json 文件。
将数据导入DataTable
将数据表导出到 Json 文件
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报