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

Я новичок в 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
12.12.2018, 12:08
    #39746568
ЛиП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка .csv файла сразу в несколько таблиц.
SSIS
...
Рейтинг: 0 / 0
12.12.2018, 13:23
    #39746627
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка .csv файла сразу в несколько таблиц.
ЛиПSSIS
Зачем этот тупой монстр?

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

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

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

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

Спасибо за ответы!
...
Рейтинг: 0 / 0
12.12.2018, 14:16
    #39746674
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка .csv файла сразу в несколько таблиц.
Learginy,
YouTube Video
...
Рейтинг: 0 / 0
12.12.2018, 16:49
    #39746803
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка .csv файла сразу в несколько таблиц.
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
12.12.2018, 17:01
    #39746814
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка .csv файла сразу в несколько таблиц.
Learginy, имейте ввиду, что это:
aleks222from 'C:\Gate\In\Atlantis\Carnival\TB_SUB_REGION.csv'

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



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

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



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


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

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



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

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


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