Griboed0ff
15-03-2022, 14:59
Доброго времени суток! Делаю запросы в базу через консольную утилиту sqlcl и пытаюсь привести ответ в нужную форму. А именно, в ответ от утилиты получаю System.Array с объектами. К объектам можно обратиться по индексу, но проблема в том, что PowerShell распознает разбивку на объекты неправильно. В ответе есть значение таблицы, которое содержит много строк и PowerShell каждую строку помечает как отдельный объект. В ответе два столбца и строки. Первая строка в ответах всегда пустая.
Пример вывода csv, System.Array, count 8:
"COUNT_ERROR","BODY_ERROR"
10412,"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebException: The remote serve
r returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"
25,"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebException: The remote server r
eturned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"
Пример вывода xml, System.Array, count 16:
<?xml version='1.0' encoding='UTF-8' ?>
<RESULTS>
<ROW>
<COLUMN NAME="COUNT_ERROR"><![CDATA[10513]]></COLUMN>
<COLUMN NAME="BODY_ERROR"><![CDATA[ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.
WebException: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718']]></COLUMN>
</ROW>
<ROW>
<COLUMN NAME="COUNT_ERROR"><![CDATA[26]]></COLUMN>
<COLUMN NAME="BODY_ERROR"><![CDATA[ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.
WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718']]></COLUMN>
</ROW>
</RESULTS>
Пример вывода json, System.Array, count 6:{"results":[{"columns":[{"name":"COUNT_ERROR","type":"NUMBER"},{"name":"BODY_ERROR","type":"VARCHAR2"}],"items":
[
{"count_error":10579,"body_error":"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.We
bException: The remote server returned an error: (400) Bad Request.\r\n at System.Net.HttpWebRequest.GetResponse()\r\n at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"}
,{"count_error":27,"body_error":"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebE
xception: The remote server returned an error: (500) Internal Server Error.\r\n at System.Net.HttpWebRequest.GetResponse()\r\n at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"}
]}]}
Далее это добро я хочу записать в другую базу, где есть эти же два столбца. Для этого мне нужно правильно распознать получаемые данные, а это два столбца и сколько то строк. Данные преобразовать в DataTable. Воспользоваться Invoke-SQLiteBulkCopy.
Не могу никак разобрать данные и преобразовать в DataTable.
Пример вывода csv, System.Array, count 8:
"COUNT_ERROR","BODY_ERROR"
10412,"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebException: The remote serve
r returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"
25,"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebException: The remote server r
eturned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"
Пример вывода xml, System.Array, count 16:
<?xml version='1.0' encoding='UTF-8' ?>
<RESULTS>
<ROW>
<COLUMN NAME="COUNT_ERROR"><![CDATA[10513]]></COLUMN>
<COLUMN NAME="BODY_ERROR"><![CDATA[ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.
WebException: The remote server returned an error: (400) Bad Request.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718']]></COLUMN>
</ROW>
<ROW>
<COLUMN NAME="COUNT_ERROR"><![CDATA[26]]></COLUMN>
<COLUMN NAME="BODY_ERROR"><![CDATA[ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.
WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest.GetResponse()
at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718']]></COLUMN>
</ROW>
</RESULTS>
Пример вывода json, System.Array, count 6:{"results":[{"columns":[{"name":"COUNT_ERROR","type":"NUMBER"},{"name":"BODY_ERROR","type":"VARCHAR2"}],"items":
[
{"count_error":10579,"body_error":"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.We
bException: The remote server returned an error: (400) Bad Request.\r\n at System.Net.HttpWebRequest.GetResponse()\r\n at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"}
,{"count_error":27,"body_error":"ERROR:МTC:StatusLastOperation=RequestError Подробная ошибка=' ERROR: StatusLastOperation=ErrorReadingStreamException Exception при чтении ответа сервера МТС. Exception=System.Net.WebE
xception: The remote server returned an error: (500) Internal Server Error.\r\n at System.Net.HttpWebRequest.GetResponse()\r\n at SecureHttp.SecureHttpRequest.PostHttpData(String url, String postData, X509Certificate2 certificate) in y:\HttpRequest.cs:line 718'"}
]}]}
Далее это добро я хочу записать в другую базу, где есть эти же два столбца. Для этого мне нужно правильно распознать получаемые данные, а это два столбца и сколько то строк. Данные преобразовать в DataTable. Воспользоваться Invoke-SQLiteBulkCopy.
Не могу никак разобрать данные и преобразовать в DataTable.