powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка .csv файла сразу в несколько таблиц.
11 сообщений из 11, страница 1 из 1
Загрузка .csv файла сразу в несколько таблиц.
    #39746555
Learginy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане!

Я новичок в SQL.
У нас в базе существуют 3 таблицы, в которую загружаются данные.
Раньше данные загружались с помощью самописной проги, которая всех устаривала, пока не возросли объемы данных для загрузки.
Условно говоря, 30к строк загружались в течении нескольких часов и разносились по этим трем таблицам.
Сейчас стоит задача раз в месяц загружать порядка 0.5 - 1 миллиона строк.

Исходники приложения которым раньше пользовались давно утеряны, таким образом подходить к решению этого вопроса со стороны изменения приложения не представляется возможным.

Подскажите пожалуйста с какой стороны подойти к решению данной проблемы?
Скрипты таблиц и пример .csv файла под спойлером и во вложении соответственно.
Если нужно дополнительное описание, пожалуйста скажите.

Заранее спасибо!


Microsoft SQL Server 2008 R2 (SP3-GDR) (KB4057113) - 10.50.6560.0 (X64)
Dec 28 2017 15:03:48
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Код: sql
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.
CREATE TABLE [dbo].[Policy] (
    [IDPolicy]                 INT             IDENTITY (1, 1) NOT NULL,
    [Policy]                   NVARCHAR (2000) NULL,
    [PolicyNumber]             NVARCHAR (50)   NULL,
    [IDProduct]                NVARCHAR (50)   NULL,
    [StartDate]                DATETIME        NULL,
    [EndDate]                  DATETIME        NULL,
    CONSTRAINT [PK_Policy] PRIMARY KEY CLUSTERED ([IDPolicy] ASC)
);
CREATE TABLE [dbo].[Person] (
    [IDPerson]            INT             IDENTITY (1, 1) NOT NULL,
    [IDPolicy]            INT             NULL,
    [EndCustomerName]     NVARCHAR (50)   NULL,
    [EndCustomerSurname]  NVARCHAR (50)   NULL,
    [Birthdate]           DATETIME        NULL,
    CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([IDPerson] ASC),
    CONSTRAINT [FK_Person_Policy] FOREIGN KEY ([IDPolicy]) REFERENCES [dbo].[Policy] ([IDPolicy])
);
CREATE TABLE [dbo].[Vehicle] (
    [IDVehicle]                    INT            IDENTITY (1, 1) NOT NULL,
    [Vehicle]                      NVARCHAR (50)  NULL,
    [IDPolicy]                     INT            NULL,
    [LicencePlate]                 NVARCHAR (50)  NULL,
    [FirstDate]                    DATETIME       NULL,
    [ModelType]                    NVARCHAR (50)  NULL,
    [VIN]                          NVARCHAR (20)  NULL,
    [Brand]                        NVARCHAR (50)  NULL,
    CONSTRAINT [PK_Vehicle] PRIMARY KEY CLUSTERED ([IDVehicle] ASC),
    CONSTRAINT [FK_Vehicle_Policy] FOREIGN KEY ([IDPolicy]) REFERENCES [dbo].[Policy] ([IDPolicy])
);

...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746568
ЛиП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSIS
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746627
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛиПSSIS
Зачем этот тупой монстр?

BULK INSERT + процедура из трех запросов
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746649
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BULK хорошо работает для SOHO, но в промышленных системах его сложно сопровождать.
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746658
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовBULK хорошо работает для SOHO, но в промышленных системах его сложно сопровождать.

1. Вы не умеете его готовить.
2. Не может быть более сложная система более надежной.
3. Для имитации бурной деятельности, да, незаменимая вещь.
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746668
Learginy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222Владислав КолосовBULK хорошо работает для SOHO, но в промышленных системах его сложно сопровождать.

1. Вы не умеете его готовить.
2. Не может быть более сложная система более надежной.
3. Для имитации бурной деятельности, да, незаменимая вещь.

Не могли бы Вы подсказать, как его правильно готовить?)
aleks222...
BULK INSERT + процедура из трех запросов
Можете описать немного подробнее?
К сожалению я все еще не очень понимаю что мне нужно сделать

Спасибо за ответы!
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746674
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Learginy,
YouTube Video
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746803
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LearginyНе могли бы Вы подсказать, как его правильно готовить?)
aleks222...
BULK INSERT + процедура из трех запросов


Все великое - просто

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   create table #TB_SUB_REGION ( 	dummy varchar(1) NULL,
                                    SUB_REGION_ID int primary key,
	                                SUB_REGION_CODE varchar(4) NOT NULL,
	                                SUB_REGION_NAME varchar(128) NOT NULL,
	                                REGION_ID int NULL,
	                                [STATUS] varchar(32) NOT NULL,
	                                STATUS_DATE varchar(128) NOT NULL,
	                                LAST_ACTIVITY_TYPE char(4) NOT NULL
                                 );

    bulk insert #TB_SUB_REGION
      from 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.csv' 
      with ( FORMATFILE = 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.fmt'
           , DATAFILETYPE = 'char', CODEPAGE = 'RAW', FIRSTROW = 2 
           , ORDER( SUB_REGION_ID )     
           --, ERRORFILE = 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.err'
           );

--опосля чего можно распихать содержимое хоть в десять таблиц
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39746814
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Learginy, имейте ввиду, что это:
aleks222from 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.csv'

- путь на сервере.
Но он вполне проглатывает и UNC пути \\сервер\шара.
Доступ к шаре должен иметь компьютер$ , если сам MSSQLSERVER на этом компьютер запущен от имени nt service\mssqlserver или network service.
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39747214
Learginy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222LearginyНе могли бы Вы подсказать, как его правильно готовить?)
пропущено...



Все великое - просто

Код: sql
1.
2.
3.
...
      with ( FORMATFILE = 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.fmt'
...



Это файл форматирования, верно? Его нужно сделать на основе #таблицы с помощью bcp? Как не подскажете?
...
Рейтинг: 0 / 0
Загрузка .csv файла сразу в несколько таблиц.
    #39747224
Learginy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Learginyaleks222пропущено...


Все великое - просто

Код: sql
1.
2.
3.
...
      with ( FORMATFILE = 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.fmt'
...



Это файл форматирования, верно? Его нужно сделать на основе #таблицы с помощью bcp? Как не подскажете?

Извините, в гугле разбанили.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Загрузка .csv файла сразу в несколько таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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