Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6   вперед  Ctrl      все
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
BULK INSERT или BCP ?

BCP - это утилита командной строки.
BULK INSERT - это команда TSQL.
Кто должен за вас выбрать, что для вас лучше ?
28 май 15, 14:22    [17701552]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
понял, спасибо.
Как можно автоматом создать таблицу налету с необходимыми полями на основании файла с данными?
28 май 15, 14:48    [17701729]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
Как можно автоматом создать таблицу налету с необходимыми полями на основании файла с данными?

Автоматом - это не написав ни строчки кода что ли ?
28 май 15, 14:49    [17701740]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
Как можно автоматом создать таблицу налету с необходимыми полями на основании файла с данными?

Автоматом - это не написав ни строчки кода что ли ?


Вот для примера:
create table #test1
(id int,
name varchar(25))

insert into #test1
select 1, 'Привет, Эстония!'
union 
select 2, 'How are you?'

select * into t from #test1
select * from t

drop table #test1


Я же тут не создаю таблицу t, она как-то не лету создалась в БД, само догадалось какие должны быть поля.
Неужели нужно 60 столбцов руками описывать? Может есть какой-то хитрый способ? Я когда-то, помню, через стандартную утилиту импорта экспорта делал, там вроде бы создавалось, но нудно вспомнить.
28 май 15, 15:11    [17701881]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
Я же тут не создаю таблицу t,

Ну вы же написали команду, которая ее создает. Не сервер же сам придумал, сколько и каких полей будет в таблице t
28 май 15, 15:13    [17701903]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
Я же тут не создаю таблицу t,

Ну вы же написали команду, которая ее создает. Не сервер же сам придумал, сколько и каких полей будет в таблице t

так в "текстовом" файле, который я импортирую, там так же есть "сколько и каких полей", а даже готов в первую строку забить имена полей.
Кстати, а в BCP нельзя в выгружаемый файл включить название полей?
28 май 15, 15:41    [17702134]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
так в "текстовом" файле, который я импортирую

Вы его импортируете командой SELECT INTO ?
Откуда сервер должен узнать что-то про текстовый файл ?

Vad72
Кстати, а в BCP нельзя в выгружаемый файл включить название полей?

https://msdn.microsoft.com/en-us/library/ms162802.aspx
28 май 15, 15:45    [17702172]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
Кстати, а в BCP нельзя в выгружаемый файл включить название полей?

https://msdn.microsoft.com/en-us/library/ms162802.aspx

вроде бы нет такой опции в параметрах
28 май 15, 16:09    [17702377]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
Glory
пропущено...

https://msdn.microsoft.com/en-us/library/ms162802.aspx

вроде бы нет такой опции в параметрах

И какой из этого можно сделать вывод ?
28 май 15, 16:12    [17702395]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
пропущено...

вроде бы нет такой опции в параметрах

И какой из этого можно сделать вывод ?


недоработка microsoft-а, однозначно Картинка с другого сайта.
28 май 15, 16:37    [17702602]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
недоработка microsoft-а, однозначно

Или что кто-то пытается чесать левое ухо пяткой правой ноги
28 май 15, 16:44    [17702654]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
в том же access есть возможность вкл/откл использовать название столбцов из 1-ой строки, а это уже замашка на стандарт. Тут они этот стандарт при выгрузке (экспорте) похерили, а зря.
28 май 15, 17:27    [17702906]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
а можно как-то в xml выгрузить?
28 май 15, 17:49    [17703105]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Hammer
Member

Откуда: Москва
Сообщений: 494
myWestern
Задача: Вставить все поля с таблицы «Транзит» в 3 связанные таблицы «Клиент», «Касса», «Операция», операцие вставки insert * select, или другими способами.
Условия: В таблице «Транзит» по полю «номер_клиента», «номер кассы», «номер чека» могут дублироваться эти данные.
При вставке в таблицу «Касса» не дожно вставиться дублирующие значения номера кассы (то есть номер кассы должен быть один). Аналогично с номером клиента, то есть номер клиента при вставке должен быть один. В таблицу «Операция» должны вставиться сумма, дата и номер чека и по данным полям нет никаких условий (то есть они могут повторяться).


А триггер на Insert табл. «Транзит» создать не судьба?
28 май 15, 19:53    [17703662]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
в том же access есть возможность вкл/откл использовать название столбцов из 1-ой строки, а это уже замашка на стандарт. Тут они этот стандарт при выгрузке (экспорте) похерили, а зря.

Рассуждения из серии - в одной программе я нашел, где можно писать запросы, а во второй программе - не нашел и поэтому делаю вывод, что вторая программа "похерила стандарт"
28 май 15, 21:17    [17703955]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
может в ms sql server есть другие механизмы выгрузки, о которых я не знаю (до вчерашнего дня я вообще ни одного способа не знал), но я знаю, что такая практика есть, когда в массив данных включают первой строкой имена столбцов. Хотя в промышленной эксплуатации согласен, такого нет, там даже текстовых файлов не всегда найдешь, в основном, бинарный файл.
29 май 15, 10:25    [17705395]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
может в ms sql server есть другие механизмы выгрузки, о которых я не знаю

вот именно
29 май 15, 10:27    [17705413]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Vad72
может в ms sql server есть другие механизмы выгрузки, о которых я не знаю (до вчерашнего дня я вообще ни одного способа не знал), но я знаю, что такая практика есть, когда в массив данных включают первой строкой имена столбцов. Хотя в промышленной эксплуатации согласен, такого нет, там даже текстовых файлов не всегда найдешь, в основном, бинарный файл.


мне понравилось это ссобщение полностью, от начала до конца!
перечитал раза 3.
Особенно про "не найдешь"
29 май 15, 10:38    [17705468]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Можно еще вопрос к знатокам?
Загружаю текстовый файл в таблицу на сервер
bcp com.dbo.m1 in K.dat -c -U sa -P 123456 -S 10.1.0.9 -e K.log -C 1251

Как я писал выше, в таблице 60 полей и есть проблемы в случае, когда поля не текстовые, а, например, типа int.
В текстовом файле, где поля разделены символом табуляции, если нет значения полей, то там пусто, в том смысле, что идет символ табуляции и следом следующий символ табуляции. Так вот, когда значения нет, у меня не выполняется импорт, спотыкается на этом поле. Можно что-то придумать, как это можно обойти?
4 июн 15, 10:52    [17729012]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8823
Vad72
в массив данных включают первой строкой имена столбцов

Это называется CSV формат.
4 июн 15, 12:37    [17729719]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
Так вот, когда значения нет, у меня не выполняется импорт, спотыкается на этом поле

Так и пишет - "спотыкаюсь, мол, на этом поле" ?
4 июн 15, 12:38    [17729729]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
Так вот, когда значения нет, у меня не выполняется импорт, спотыкается на этом поле

Так и пишет - "спотыкаюсь, мол, на этом поле" ?

Картинка с другого сайта.
#@ Строка 1, Столбец 33: Недопустимое символьное значение для указания отклонения @#
#@ Строка 4, Столбец 29: Недопустимый формат даты @#
4 июн 15, 12:46    [17729784]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
Недопустимое символьное значение для указания отклонения @#

А где вы задали это "указание отклонения" ?
4 июн 15, 12:48    [17729796]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Glory
Vad72
Недопустимое символьное значение для указания отклонения @#

А где вы задали это "указание отклонения" ?

я не в курсе, я ни чего не задавал. Я использую утилиту так
bcp com.dbo.m1 in K.dat -c -U sa -P 123456 -S 10.1.0.9 -e K.log -C 1251


Если я таблице m1 поле делаю текстовое, то все грузится, если поля типа int, datetime, то там где в текстовом файле пусто (ТАВТАВ), оно ругается.
4 июн 15, 12:53    [17729838]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vad72
я не в курсе, я ни чего не задавал

А что вы тогда от сервера хотите ?

Vad72
Я использую утилиту так

А вы про каждую опцию читали ? Или просто методом профессора Тыка подобрали ?

-c
Performs the operation using a character data type. This option does not prompt for each field; it uses char as the storage type, without prefixes and with \t (tab character) as the field separator and \r\n (newline character) as the row terminator.
4 июн 15, 12:56    [17729860]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить