为了账号安全,请及时绑定邮箱和手机立即绑定

ssis 生成 json 文件删除返回

ssis 生成 json 文件删除返回

C#
交互式爱情 2022-07-10 16:24:05
我正在使用脚本任务从 sql 查询生成 json 文件。脚本任务中的c#代码:public void Main(){    // TODO: Add your code here    ConnectionManager cm;    string sqlString = "";    System.IO.StreamWriter file = new System.IO.StreamWriter(@"f:\JSONOutput.txt");    sqlString = "SELECT * FROM[dbo].[JJVCACUProductElectron] where id in (1,2,3) for json auto";    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(sqlString, sqlConn);    System.Data.SqlClient.SqlDataReader reader = sqlComm.ExecuteReader();    try    {while (reader.Read()){    file.WriteLine(reader[0]);}    }    finally    {// Always call Close when done reading.reader.Close();    }    cm.ReleaseConnection(sqlConn);    Dts.TaskResult = (int)ScriptResults.Success;}生成的输出文件不完整,我猜某些列中可能有返回。如何删除输出中的返回字符?
查看完整描述

2 回答

?
MYYA

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;

            }



        }


查看完整回答
反对 回复 2022-07-10
?
森林海

TA贡献2011条经验 获得超2个赞

解决方法

您可以for json auto从 SQL 命令中删除部分并将数据导入 DataTable,然后将 DataTable 导出到 Json 文件。

将数据导入DataTable

将数据表导出到 Json 文件


查看完整回答
反对 回复 2022-07-10
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号