ssis 生成 json 文件删除返回

我正在使用脚本任务从 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;

}

生成的输出文件不完整,我猜某些列中可能有返回。如何删除输出中的返回字符?


交互式爱情
浏览 90回答 2
2回答

MYYA

工作代码:从 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;            }        }

森林海

解决方法您可以for json auto从 SQL 命令中删除部分并将数据导入 DataTable,然后将 DataTable 导出到 Json 文件。将数据导入DataTable将 SQL 表读入 C# DataTable将数据表导出到 Json 文件在 C# 中将数据表转换为 JSON
打开App,查看更多内容
随时随地看视频慕课网APP