Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
Здравствуйте!
Подскажите как завести в MSSQL 2005 тв программу из текстового формата (файла)?
Пример:
Программа телеканала "СТС" с 30 мая по 5 июня 2011 г.
Понедельник, 30 мая
6.00 "Космические спасатели лейтенанта Марша". Мультсериал. 2 серии.
6.55 "Смешарики". Мультсериал.
7.00 "Приключения мультяшек". Мультсериал.
7.30 "Приключения Вуди и его друзей". Мультсериал.
5.59 -
Вторник, 31 мая
6.00 "Космические спасатели лейтенанта Марша". Мультсериал.
6.30 Комедия на СТС. "КАК Я ВСТРЕТИЛ ВАШУ МАМУ".
6.55 "Смешарики". Мультсериал.
7.00 "Приключения мультяшек". Мультсериал.
5.59 -
Среда, 1 июня
6.00 Комедия на СТС. "КАК Я ВСТРЕТИЛ ВАШУ МАМУ". 2 серии.
6.55 "Смешарики". Мультсериал.
7.00 "Приключения мультяшек". Мультсериал.
7.30 "Приключения Вуди и его друзей". Мультсериал.
5.59 -
Поля в базе, например:
ID, Time, Name, Жанр, DateTime
1 | 6.00 | "Космические спасатели лейтенанта Марша".   |Мультсериал. | Понедельник, 30 мая
2 | 6.55 | "Смешарики".  |Мультсериал. | Понедельник, 30 мая
...
3 | 7.00 | "Приключения мультяшек".  |Мультсериал. | Среда, 1 июня
4 | 7.30 | "Приключения Вуди и его друзей".   |Мультсериал. | Среда, 1 июня
...

Пробовал через BULK INSERT, но не получилось заводить ID, непонятноcти с Name, Жанр и с днем недели.
Получалось только так в 2 поля, до второго дня недели:
 6.00 | "Космические спасатели лейтенанта Марша".   Мультсериал. 
 6.55 | "Смешарики".  Мультсериал. 
...
25 май 11, 09:16    [10703863]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Scend, писать парсер. И то, не факт, что получится написать более-менее живой. Разве что, если набор "Мультсериал/сериал/..." будет более-менее определен.
* Парсер писать не силами SQL ))). Т.е. вопрос не сюда.
25 май 11, 09:23    [10703901]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Jasper7
Member

Откуда: Череповец
Сообщений: 8
Scend,
Есть вариант Текстовый Блокнот -> Excel -> База MSSQL
В Excel вставляешь, на вкладке Данные (в 2007 у меня) Текст по столбцам
Ну а потом импорт в Базе сделать из этого Excel-файла
25 май 11, 09:41    [10704013]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
А подскажите как с BULK INSERT вставлять ID. Хотя бы в 2 поля + ID.
id | Time | Name
Я делаю так
BULK
INSERT [tv].[dbo].[tv1_tbl]
FROM 'c:\tv\1.txt'
WITH
(
CODEPAGE =  'ACP' ,
FIRSTROW = 2,
CHECK_CONSTRAINTS,
KEEPIDENTITY,
FIELDTERMINATOR = '.',
ROWTERMINATOR = '\n'
)
Но,
Violation of PRIMARY KEY constraint 'PK_tv1'. Cannot insert duplicate key in object 'dbo.tv1_tbl'.
25 май 11, 09:58    [10704128]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
kDnZP
Scend, писать парсер. И то, не факт, что получится написать более-менее живой. Разве что, если набор "Мультсериал/сериал/..." будет более-менее определен.
* Парсер писать не силами SQL ))). Т.е. вопрос не сюда.

Отпарсил до более-менее структурного вида
@TV-Day:Понедельник

@TV-Text:<B>4.00 «Космические спасатели лейтенанта Марша». Мультсериал.
@TV-Text:<B>4.55 «Смешарики». Мультсериал.
@TV-Text:<B>5.00 «Приключения мультяшек». Мультсериал.

@TV-Day:Вторник

@TV-Text:<B>4.00 «Космические спасатели лейтенанта Марша». Мультсериал.
@TV-Text:<B>4.30 «КАК Я ВСТРЕТИЛ ВАШУ МАМУ». Сериал.
@TV-Text:<B>4.55 «Смешарики». Мультсериал.
@TV-Text:<B>5.00 «Приключения мультяшек». Мультсериал.

Поля для базы:
ID, Time, Name, Жанр, DateTime

Можно этот вариант завести в таблицу?
25 май 11, 10:36    [10704421]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а какой ПК у вас для 'dbo.tv1_tbl' ?
25 май 11, 10:57    [10704611]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
Maxx
а какой ПК у вас для 'dbo.tv1_tbl' ?

Стандартный Primary Key.
Is Identity Yes
Increment 1
Seed 1
25 май 11, 11:16    [10704840]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Violation of PRIMARY KEY constraint 'PK_tv1'. Cannot insert duplicate key in object 'dbo.tv1_tbl'.тогда кака вы получили вот такое ??? Что вы туда пеишите то ???
25 май 11, 11:27    [10704952]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
Maxx
Violation of PRIMARY KEY constraint 'PK_tv1'. Cannot insert duplicate key in object 'dbo.tv1_tbl'.тогда кака вы получили вот такое ??? Что вы туда пеишите то ???

Ну вот так:
BULK
INSERT [tv].[dbo].[tv1_tbl]
FROM 'c:\tv\1.txt'
WITH
(
CODEPAGE =  'ACP' ,
FIRSTROW = 3,
CHECK_CONSTRAINTS,
KEEPIDENTITY,
FIELDTERMINATOR = '.',
ROWTERMINATOR = '\n'
)

Колонки:
ID, col1, col2, col3

Вот это пишу:
4.00 «Космические спасатели лейтенанта Марша». Мультсериал.
4.55 «Смешарики». Мультсериал.
5.00 «Приключения мультяшек». Мультсериал.
5.30 «Приключения Вуди и его друзей». Мультсериал.
6.00 «СВЕТОФОР». Сериал.
6.30 «ДАЕШЬ МОЛОДЕЖЬ!». Сериал.

Подкорректировал немного колонки.
Теперь выдает ошибку типа некорректный формат колонки1 (id). Видимо он время пытается туда записать.
Я думал ID будет автоматически записываться - 0,1,2 и т.п.
Как это сделать, чтобы ID автоматически писалось и со второй колонки уже начиналась запись из текста.
25 май 11, 11:39    [10705071]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Scend
Я думал ID будет автоматически записываться - 0,1,2 и т.п.

А с какой целью вы тогда задали параметер KEEPIDENTITY ?
25 май 11, 11:46    [10705156]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
Glory
Scend
Я думал ID будет автоматически записываться - 0,1,2 и т.п.

А с какой целью вы тогда задали параметер KEEPIDENTITY ?

Это я пробовал с ним и без него. Не получалось.

Наконец-то нашел правильную структуру, которая как надо пишется в таблицу совместно с ID:
Программа телеканала "СТС" с 30 мая по 5 июня 2011 г.
Понедельник, 30 мая
#4.00# «Космические спасатели лейтенанта Марша».# Мультсериал.
#4.55# «Смешарики».# Мультсериал.
#5.00# «Приключения мультяшек».# Мультсериал.
#5.30# «Приключения Вуди и его друзей».# Мультсериал.
#6.00# «СВЕТОФОР».# Сериал.
#6.30# «ДАЕШЬ МОЛОДЕЖЬ!».# Сериал.
#7.00# «ВОРОНИНЫ».# Сериал.

Осталось каким-то образом в последнюю колонку записывать дату - Понедельник, 30 мая.
Возможно ли это с этим кодом:
BULK
INSERT [tv].[dbo].[tv1_tbl]
FROM 'c:\tv\1.txt'
WITH
(
CODEPAGE =  'ACP' ,
FIRSTROW = 3,
CHECK_CONSTRAINTS,
--KEEPIDENTITY,
FIELDTERMINATOR = '#',
ROWTERMINATOR = '\n'
)
25 май 11, 12:05    [10705351]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
PS. Подскажите, как запросом, удаляя все данные из таблицы
delete from [tv].[dbo].[tv1_tbl]
обнулить и счетчик ID.
25 май 11, 12:32    [10705655]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
Scend,

truncate table [tv].[dbo].[tv1_tbl]
25 май 11, 12:37    [10705710]     Ответить | Цитировать Сообщить модератору
 Re: Insert тв-программы  [new]
Scend
Member

Откуда:
Сообщений: 298
Спасибо, всё получилось.
А скажите можно ли тут
BULK
INSERT [tv].[dbo].[tv1_tbl]
FROM 'c:\tv\1.txt'
WITH
(
CODEPAGE =  'ACP' ,
FIRSTROW = 3,
CHECK_CONSTRAINTS,
--KEEPIDENTITY,
FIELDTERMINATOR = '#',
ROWTERMINATOR = '\n'
)
добавить код, который бы в последнюю колонку (col5) добавлял что-нибудь, допустим 'готово'.
Т.е. данные заливаются из файла 1.txt и плюс к этим данным в пустую колонку col5 добавляется значение 'готово'.
27 май 11, 12:36    [10718774]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить