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

Откуда: AB
Сообщений: 7482
есть такой файл
автор
"1HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"
"2HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"
"3HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 03:00:00","09/01/2015 00:00:00","E","ROAD"
"4HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 04:00:00","09/01/2015 00:00:00","E","ROAD"
"5HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 05:20:30","09/01/2015 00:00:00","E","ROAD"
"6HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 06:00:00","09/01/2015 00:00:00","E","ROAD"
"7HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 07:00:00","09/01/2015 00:00:00","E","ROAD"
"8HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 08:00:00","09/01/2015 00:00:00","E","ROAD"
"9HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 09:00:00","09/01/2015 00:00:00","E","ROAD"
"AHEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 10:00:00","09/01/2015 00:00:00","E","ROAD"
Загоняется команндой "bcp tablename in file.csv -c"

Этош кошмар какой-то, все кроме даты загоняется с двойными кавычками, кроме даты, целые и дробные числа вообще не конвертируются. Как побороть?
17 сен 15, 23:04    [18163484]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
aleks2
Guest
Варианты
1. Написать программульку, которая уберет из файла кавычки. Но не все.
2. Загрузить "как есть" во времянку и убрать-преобразовать в ms sql.
18 сен 15, 05:20    [18163761]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Glory
Member

Откуда:
Сообщений: 104751
https://msdn.microsoft.com/en-us/library/ms191516.aspx
18 сен 15, 07:51    [18163829]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
В целевой таблице сделать все поля текстовыми, а после импорта преобразовывать типы.
18 сен 15, 09:03    [18163971]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
komrad
Member

Откуда:
Сообщений: 5516
Relic Hunter
есть такой файл
+

автор
"1HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"
"2HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"
"3HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 03:00:00","09/01/2015 00:00:00","E","ROAD"
"4HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 04:00:00","09/01/2015 00:00:00","E","ROAD"
"5HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 05:20:30","09/01/2015 00:00:00","E","ROAD"
"6HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 06:00:00","09/01/2015 00:00:00","E","ROAD"
"7HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 07:00:00","09/01/2015 00:00:00","E","ROAD"
"8HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 08:00:00","09/01/2015 00:00:00","E","ROAD"
"9HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 09:00:00","09/01/2015 00:00:00","E","ROAD"
"AHEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 10:00:00","09/01/2015 0:00:00","E","ROAD"
Загоняется команндой "bcp tablename in file.csv -c"

Этош кошмар какой-то, все кроме даты загоняется с двойными кавычками, кроме даты, целые и дробные числа вообще не конвертируются. Как побороть?


Можно загрузить с указанием разделителя столбцов
Разделителем взять "," (три символа)
Тогда зальются с лишней кавычкой только крайние стоблцы
18 сен 15, 10:48    [18164371]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4805
Relic Hunter
Как побороть?


Табуляция
18 сен 15, 11:02    [18164440]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Glory
Member

Откуда:
Сообщений: 104751
komrad
Можно загрузить с указанием разделителя столбцов
Разделителем взять "," (три символа)
Тогда зальются с лишней кавычкой только крайние стоблцы

Раделитель строк тоже может состоять из нескольких символов
18 сен 15, 11:08    [18164463]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
komrad
Member

Откуда:
Сообщений: 5516
Glory
komrad
Можно загрузить с указанием разделителя столбцов
Разделителем взять "," (три символа)
Тогда зальются с лишней кавычкой только крайние стоблцы

Раделитель строк тоже может состоять из нескольких символов

тоже верно :)
в итоге, теоретически, можно избавиться от всех кавычек, кроме первой в первой записи и первом столбце И последней в последней записи последнего столбца
18 сен 15, 12:35    [18164970]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Glory
Member

Откуда:
Сообщений: 104751
komrad
И последней в последней записи последнего столбца

а чем последняя строка отличается от предпоследней ?
18 сен 15, 12:42    [18165052]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
пьяный тюлень
Member

Откуда:
Сообщений: 100
Можно сделать разделитель - кавычку, а столбцы с запятыми игнорировать.
18 сен 15, 13:01    [18165247]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
komrad
Member

Откуда:
Сообщений: 5516
Glory
komrad
И последней в последней записи последнего столбца

а чем последняя строка отличается от предпоследней ?


тем, что в случае использования последовательности "кавычка-переводстроки-кавычка" (красное) как разделителя строк, зеленые кавычки останутся

пример
"1HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"
"
2HEJOQIYO","IGUEVARRA","50819","Request","BOND","1","1","16.2075","09/01/2015 02:00:00","09/01/2015 00:00:00","E","ROAD"


в кач-ве разделителя столбцов подразумеваю "," (три символа)
18 сен 15, 13:10    [18165319]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Glory
Member

Откуда:
Сообщений: 104751
komrad
тем, что в случае использования последовательности "кавычка-переводстроки-кавычка" (красное) как разделителя строк, зеленые кавычки останутся

потому чт о разделителем строки должен быть "кавычка-переводстроки"
а первую кавычку можно попробовать убрать через prefix length
18 сен 15, 13:19    [18165384]     Ответить | Цитировать Сообщить модератору
 Re: BCP?  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7482
Экспериментальным путем удалось подобрать формат-файл. Не думал, что все так запушено. Excel делает такое на раз.
+
Целевая таблица
CREATE TABLE [dbo].[KIPJOBS](
       [jobticket] [nvarchar](50) NOT NULL,
       [requester] [nvarchar](50) NOT NULL,
       [project] [nvarchar](50) NOT NULL,
       [request] [nvarchar](50) NULL,
       [mediatype] [nvarchar](50) NULL,
       [originals] [int] NULL,
       [copies] [int] NULL,
       [sqft] [float] NULL,
       [starting] [datetime] NULL,
       [ending] [datetime] NULL,
       [desc1] [nvarchar](50) NULL,
       [desc2] [nvarchar](50) NULL,
CONSTRAINT [PK_KIPJOBS] PRIMARY KEY CLUSTERED 
)

Формат файл
11.0
14
1 SQLCHAR 0 1 "" 0 ExtraField ""
2 SQLCHAR 0 50 "\",\"" 1 jobticket SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 50 "\",\"" 2 requester SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 50 "\",\"" 3 project SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 50 "\",\"" 4 request SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 50 "\",\"" 5 mediatype SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 50 "\",\"" 6 originals SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 50 "\",\"" 7 copies SQL_Latin1_General_CP1_CI_AS
9 SQLCHAR 0 50 "\",\"" 8 sqft SQL_Latin1_General_CP1_CI_AS
10 SQLCHAR 0 50 "\",\"" 9 starting SQL_Latin1_General_CP1_CI_AS
11 SQLCHAR 0 50 "\",\"" 10 ending SQL_Latin1_General_CP1_CI_AS
12 SQLCHAR 0 50 "\",\"" 11 desc1 SQL_Latin1_General_CP1_CI_AS
13 SQLCHAR 0 50 "\"" 12 desc2 SQL_Latin1_General_CP1_CI_AS
14 SQLCHAR 0 50 "\r\n" 0 ExtraField ""
18 сен 15, 17:55    [18167319]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить