powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выгрузка
12 сообщений из 12, страница 1 из 1
Выгрузка
    #39635645
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вопрос, у меня есть запрос который создает глобальную временную таблицу в sql, после чего через cmd c помощью утилиты bcp выгружает все в файл. Вот код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Diagnostics;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string sql1 = @" мой запрос";
           
            using (SqlConnection connect = new SqlConnection(@"Server=" + textBox1.Text + ";Database=master;User Id=" + textBox2.Text + ";Password=" + textBox3.Text + ";"))
            {
               connect.Open();

               SqlCommand command = new SqlCommand(sql1, connect);
            

 
            }
           // выгрузка
               ProcessStartInfo psi;
               psi = new ProcessStartInfo("cmd", @"/k bcp " мой запрос");
               Process.Start(psi);


        }


    }
}


Смысл в том, что когда доходит дело до выгрузки, using закрывает подключение, вместе с которым умирает глобальная временная таблица из которой bcp должен был выгрузить данные.
Могу ли я перенести команду cmd в using, или же есть другой вариант выгрузки не используя bcp и cmd?
...
Рейтинг: 0 / 0
Выгрузка
    #39635681
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
Способов полно.
Но сначала попробуйте выгружать без промежуточной таблицы.
Если вы как пишите вы заполняете ее запросом.
Вот этим запросом и сразу выкачивайте данные.
...
Рейтинг: 0 / 0
Выгрузка
    #39635691
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в BCP можно указывать имя таблицы, вьюхи и даже запрос, нафига весь этот геморой?
можно не используя C# сделать то, что хочет автор, для этого надо просто открыть манул к BCP
https://docs.microsoft.com/ru-ru/sql/tools/bcp-utility?view=sql-server-2017
...
Рейтинг: 0 / 0
Выгрузка
    #39635697
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

нельзя. Так как у меня выгружаются данные в глобальную временную таблицу '##p'. BCP создать ее не может, батник на команду create table ##p ...... просто не понимает что такое ##p, в sql все норм работает.
...
Рейтинг: 0 / 0
Выгрузка
    #39635700
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

нельзя этим же запросом выкачать, потому что как я уже написал, bcp и sqlcmd не понимают ##p - глобальную временную таблицу. как бы можно решить вопрос табличной переменной, но тогда и время в 3 раза увеличится выполнения. Будет ли работать bcp в using после запроса?
...
Рейтинг: 0 / 0
Выгрузка
    #39635707
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, и еще одна проблема, cmd не понимает кириллицу, а в запросе она есть.
...
Рейтинг: 0 / 0
Выгрузка
    #39635759
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
Напиши сюда псевдокод создания временной таблы.

OlegEgorov11Petro123,

нельзя этим же запросом выкачать, потому что как я уже написал, bcp и sqlcmd не понимают ##p - глобальную временную таблицу.
Я предлагал НЕ создавать временную.
...
Рейтинг: 0 / 0
Выгрузка
    #39635777
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, без создания временной можно создать табличную переменную, '@p', так все прекрасно работает, но в 3-4 раза дольше. Запрос выполнить без создания другой таблицы невозможно, потому что в нем идет изменение структуры данных, которые мне нужны из первоначальной таблицы и сортировка идет по полю, которое создается во временной таблице, да и кириллицу все равно cmd не понимает, а в запросе она есть. мне просто нужно понять, как запустить bcp до закрытия соединения с sql.
...
Рейтинг: 0 / 0
Выгрузка
    #39635784
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11,
У вас разные коннекты. Боюсь ничего не выйдет.
Делайте не временную таблу, а постоянную.
Либо на ветку бд и тюнинг запросов чтобы время сократить.
...
Рейтинг: 0 / 0
Выгрузка
    #39635859
OlegEgorov11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Либо на ветку бд и тюнинг запросов чтобы время сократить. А можно подробнее?
...
Рейтинг: 0 / 0
Выгрузка
    #39635869
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11Petro123,
Либо на ветку бд и тюнинг запросов чтобы время сократить. А можно подробнее?дайте псвдокод или код создания временной глобальной.
...
Рейтинг: 0 / 0
Выгрузка
    #39636069
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegEgorov11Roman Mejtes,

нельзя. Так как у меня выгружаются данные в глобальную временную таблицу '##p'. BCP создать ее не может, батник на команду create table ##p ...... просто не понимает что такое ##p, в sql все норм работает.

процедура, которая заполняет таблицу и она же или другая, которая делает запрос хоть кирилицей, хоть китаицей
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Выгрузка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]