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

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



Конечно есть. SSIS !!!
5 июн 15, 11:50    [17734839]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Кролик-зануда
Maxx,
20hex=32dec=пробел

В NotePad++ рисуется как >NUL>NUL>NUL>NUL>
пробелов не вижу
Картинка с другого сайта.
5 июн 15, 12:02    [17734909]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
В NotePad++ рисуется как >NUL>NUL>NUL>NUL>

А по вашему NUL - это "ничего" ?
5 июн 15, 12:04    [17734930]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Кролик-зануда
Maxx,
20hex=32dec=пробел

ето я прогнал
Влад
порядок 09 20 09 - нормальный
НО на втором скрине у вас 2 таба подряд вообще без данных
И просиходит у вас после смена типа колонки в таблице прмерно вот ето
declare @i tinyint , @s nvarchar(2)
set @i = char(32) 
set @s = char(32) 
select @i,@s
set @i = char(9)
set @s = char(9)
select @i,@s


Но ето опять же догадки...потому кака с вам информацию надо клещами тащить
5 июн 15, 12:13    [17734987]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
Maxx,

Да не, два подряд кода 09 нормально. А вот почему после них идет символ 00, непонятно. Отсюда и nul в notepad.
5 июн 15, 12:40    [17735144]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
Я про 17734552
5 июн 15, 12:40    [17735152]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Maxx
НО на втором скрине у вас 2 таба подряд вообще без данных

то я взял строку из лога, думал она туда попадает в оригинальном виде. В логе эта строка уже без NUL.
5 июн 15, 12:49    [17735208]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
virtuOS
Я про 17734552

тут информация из файла импортируемого, открывал в hex редакторе может не правильно скопировал
5 июн 15, 12:50    [17735213]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
тут информация из файла импортируемого,

Так про это уже сто лет и идет разговор.
Что ваш файл не то, что вы про него думаете и говорите тут
5 июн 15, 12:53    [17735230]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
место где спотыкается 09 00 09 00 09 00 , я посмотрел, 09 09 нет, там четко чередуется , подряд два табе нету
5 июн 15, 12:58    [17735264]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 265
myWestern
Ребята, требуется вставить порядка 100 тысяч строк (считанных из файла) в таблице, способом оптимальным по производительности. К примеру есть таблица ФИО, и файл на 100 тысяч фио. В таблице и в файле могут быть дубликаты. Чем воспользоваться чтобы можно было быстро вставить в таблице массив прочитанных из файла фио исключая дублирование?

Давно бы можно было создать промежуточную таблицу с полями nvarchar, импортировать ваш файл, а уже после этого разбираться с типами данных.
5 июн 15, 12:59    [17735272]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
место где спотыкается 09 00 09 00 09 00 , я посмотрел, 09 09 нет, там четко чередуется , подряд два табе нету

Я понимаю, что для вас не существует "поля" в файле, если вы его не видите.
Но утилита bcp прекрасно видит эти 00
5 июн 15, 12:59    [17735273]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вообще впечатление что открываються поппеременно 2 файла и показываються сюда результаты.....
5 июн 15, 13:03    [17735299]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
virtuOS
Maxx,

Да не, два подряд кода 09 нормально. А вот почему после них идет символ 00, непонятно. Отсюда и nul в notepad.


да я так же как и Вы пытаюсь угадать что конкретно у ТС происходит
5 июн 15, 13:04    [17735304]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Maxx
да я так же как и Вы пытаюсь угадать что конкретно у ТС происходит

ТС пытается заставить других разобрать его входной файл и написать ему правильный формат файл
5 июн 15, 13:07    [17735318]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory,

ето понятно
5 июн 15, 13:17    [17735381]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Давайте начнем с чистого листа.

1. В пустой таблице тип поля varchar(2)
2. Формирую файл форматов
bcp vsei.dbo.m1 format nul -c -f m1.fmt -T -S 10.1.0.9 

3. Импортирую файл с данными
bcp vsei.dbo.m1 in K10000.dat -T -S 10.1.0.9 -e K10000.log -C 1251 -f m1.fmt

4. Выгружаю таблицу в файл
bcp vsei.dbo.m1 out K10001.dat -T -S 10.1.0.9 -c -e K10001.log -C 1251

5. Удаляю таблицу и создаю новую с полем типа tinyint
6. Формирую файл форматов
bcp vsei.dbo.m1 format nul -c -f m1.fmt -T -S 10.1.0.9 

7. Импортирую файл с данными K10001.dat, тот который сами только что создали из БД, такой командой
bcp vsei.dbo.m1 in K10001.dat -T -S 10.1.0.9 -e K10001.log -C 1251 -f m1.fmt 

Всё грузится без проблем.
8. Пытаюсь загрузить изначальный файл
bcp vsei.dbo.m1 in K10000.dat -T -S 10.1.0.9 -e K10000.log -C 1251 -f m1.fmt

ошибка
+

Начато копирование...
Отправлено строк на SQL Server: 1000. Всего отправлено: 1000
Отправлено строк на SQL Server: 1000. Всего отправлено: 2000
Отправлено строк на SQL Server: 1000. Всего отправлено: 3000
Отправлено строк на SQL Server: 1000. Всего отправлено: 4000
Отправлено строк на SQL Server: 1000. Всего отправлено: 5000
Отправлено строк на SQL Server: 1000. Всего отправлено: 6000
Отправлено строк на SQL Server: 1000. Всего отправлено: 7000
Отправлено строк на SQL Server: 1000. Всего отправлено: 8000
SQLState = 22005, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Недопустимое символьн
Отправлено строк на SQL Server: 1000. Всего отправлено: 9000

Скопировано строк: 9999.
Размер сетевого пакета (в байтах): 4096
Время (мс) Всего : 234 В среднем : (42730.77 строк в секунду.)


лог
+
C:\IMPORT>type K10000.log
#@ Строка 8756, Столбец 22: Недопустимое символьное значение для указания отклонения @#
...


Предложения есть, как можно начальный файл импортировать в таблицу с полем типа tinyint?
Что искать и начальном файле для импорта, и что потом делать, с тем, что найдешь, как осуществить загрузку?
Ну или самый критичный случай, что необходимо изменить в первоначальном файле (хотя не уверен, что это возможно)?
5 июн 15, 13:30    [17735478]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
если символы 00 (NUL) есть в файле, то загрузка в tinyint возможно осуществить?
5 июн 15, 13:49    [17735661]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
Vad72
если символы 00 (NUL) есть в файле, то загрузка в tinyint возможно осуществить?

кстати, тот файл, что сами создали и назад загрузили, он с NUL. Получается вообще не понятно.
5 июн 15, 13:54    [17735710]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
если символы 00 (NUL) есть в файле, то загрузка в tinyint возможно осуществить?

И в какое число bcp должна преобразовать символ с этим кодом ?
5 июн 15, 13:55    [17735717]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
2. Формирую файл форматов

Vad72
6. Формирую файл форматов

Вы хоть сравнивали эти файлы ?
5 июн 15, 13:57    [17735744]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
да сравнивал, где менял тип, там и строка изменена в файле форматов

Если у меня запрос
select  m1.CntrGCPeriod,ASCII (m1.CntrGCPeriod), LEN(m1.CntrGCPeriod), COUNT(*) from m1
group by m1.CntrGCPeriod, ASCII (m1.CntrGCPeriod), LEN(m1.CntrGCPeriod) 
Order by 1

возвращает
	NULL	0	2018
10	49	2	15
16	49	2	86740
4	52	1	412
6	54	1	2562
8	56	1	8253


а такой запрос
select  m1.CntrGCPeriod,ASCII (m1.CntrGCPeriod), LEN(m1.CntrGCPeriod), COUNT(*) from m1
where m1.CntrGCPeriod is null
group by m1.CntrGCPeriod, ASCII (m1.CntrGCPeriod), LEN(m1.CntrGCPeriod) 
ни чего не возвращает, то что в этих "пустых" полях хранится ?
5 июн 15, 14:18    [17735946]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Vad72
2. Формирую файл форматов

Vad72
6. Формирую файл форматов

Вы хоть сравнивали эти файлы ?


5 июн 15, 14:19    [17735953]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vad72
то что в этих "пустых" полях хранится ?

В полях хранятся значения. Значения, Карл ! Которые туда были записаны

Vad72
да сравнивал, где менял тип, там и строка изменена в файле форматов

Т.е. вы намеренно применяете формат файл от "чужого" файла ?
5 июн 15, 14:22    [17735971]     Ответить | Цитировать Сообщить модератору
 Re: вставка большого количества строк в таблицу  [new]
Vad72
Member [заблокирован]

Откуда: KYIV
Сообщений: 4613
declare @v varchar(2)
select @v=''
select LEN(@v), ASCII (@v)

0	NULL
5 июн 15, 14:23    [17735981]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить