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

Откуда:
Сообщений: 3767
Пытаюсь закачать CSV файл вот такой командой:
bulk insert t_AppImport
from 'c:\1.csv'
with(
         FIELDTERMINATOR = ';',
         ROWTERMINATOR = ';'
      )

Однако выдается вот такая ошибка:

Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 1, column 2 (idapp).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 2, column 2 (idapp).


IDAPP имеет тип INT

файл выглядит таким образом:

"idapp";"CHNNL";"FIO"
"53";"XXXX";"Иванов И.И.";


можно ли закачать этот файл?
17 фев 05, 09:44    [1326954]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ещё бы увидеть, как выглядит таблица t_AppImport
17 фев 05, 09:59    [1327005]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
CREATE TABLE [t_AppImport] (
	[f_AppImportID] [int] IDENTITY (1, 1) NOT NULL ,
	[idapp] [int] NULL ,
	[CHNNL] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
	[FIO] [varchar] (35) COLLATE Cyrillic_General_CI_AS NOT NULL 
17 фев 05, 10:00    [1327010]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А если написать

ROWTERMINATOR = ';\n'

???
17 фев 05, 10:03    [1327022]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
Теперь вот так:
SQL сервер

Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 1, column 2 (idapp).
17 фев 05, 10:23    [1327092]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А так?
bulk insert t_AppImport
from 'c:\1.csv'
with(
         FIELDTERMINATOR = ';',
         ROWTERMINATOR = ';\n'
         FIRSTROW
      )
17 фев 05, 10:26    [1327102]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34243
Блог
Добавь
FIRSTROW = 2
17 фев 05, 10:26    [1327103]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
SQL сервер

(0 row(s) affected)
17 фев 05, 10:29    [1327110]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34243
Блог
>>Ещё бы увидеть, как выглядит таблица t_AppImport

^
17 фев 05, 10:44    [1327172]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Imho, либо в файле 'c:\1.csv' должно быть какое-нибудь значение для поля[f_AppImportID] [int] IDENTITY которое, кстати, будет игнорироваться пока не указано KEEPIDENTITY, либо придется использовать FORMATFILE...
17 фев 05, 12:10    [1327527]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
Оба варианта к сожалению не подходят
17 фев 05, 12:18    [1327579]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Да, кавычки создают неудобство, но в данном конкретном случае это можно обойти например так
c:\1.csv
"f_AppImportID";"idapp";"CHNNL";"FIO";
"1";"53";"XXXX";"Иванов И.И.";

bulk insert t_AppImport
from 'c:\1.csv'
with(
         FIELDTERMINATOR = '";"',
         ROWTERMINATOR = '";\n',
         CODEPAGE = 'RAW',
         FIRSTROW = 2
      )
17 фев 05, 12:46    [1327721]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
Если стоит FIRSTROW = 2 то
SQL SERVER

(0 row(s) affected)
17 фев 05, 12:50    [1327737]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Tаrantino
Если стоит FIRSTROW = 2 то
SQL SERVER

(0 row(s) affected)

А попробуйте-ка с двумя записями
автор
"f_AppImportID";"idapp";"CHNNL";"FIO";
"1";"53";"XXXX";"Иванов И.И.";
"2";"54";"YYYY";"Петров П.П.";

и проконтролируйте, чтобы последняя строка заканчивалась \n
?? row(s) affected
17 фев 05, 13:20    [1327917]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
В том то и дело что в файле всегда одна запись
17 фев 05, 13:22    [1327931]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
В том то и дело что в файле всегда одна запись
Вот так
автор
"f_AppImportID";"idapp";"CHNNL";"FIO"
"1";"53";"XXXX";"Иванов И.И.";

будет действительно одна запись, а вот так
автор
"f_AppImportID";"idapp";"CHNNL";"FIO";
"1";"53";"XXXX";"Иванов И.И.";

будет две, и вторая как раз и обработается. Вы уверены, что у Вас второй вариант?
17 фев 05, 13:34    [1327989]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
сорри у меня вот такой варинат

"idapp";"CHNNL";"FIO"
"53";"XXXX";"Иванов И.И."
17 фев 05, 13:57    [1328113]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Tаrantino
сорри у меня вот такой варинат

"idapp";"CHNNL";"FIO"
"53";"XXXX";"Иванов И.И."

Ну тогда, во-первых ROWTERMINATOR = '"\n'
а во-вторых, BOL "The format file should be used in cases in which:
The data file contains greater or fewer columns than the table or view.
...
"
17 фев 05, 14:19    [1328195]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Извращение, конечно, но можно и так :))
create table #t(
 semicolon1 varchar(10) null,
 [idapp] [int] NULL ,
 semicolon2 varchar(10) null,
 [CHNNL] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
 semicolon3 varchar(10) null,
 [FIO] [varchar] (35) COLLATE Cyrillic_General_CI_AS NOT NULL 
)
bulk insert #t
from 'c:\1.csv'
with(
         FIELDTERMINATOR = '"',
         ROWTERMINATOR = '"\n',
	 CODEPAGE = 'RAW',
         FIRSTROW = 2
      )
select idapp,CHNNL,FIO from #t
drop table #t
17 фев 05, 14:40    [1328281]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
Я же говорю что при FIRSTROW = 2 не вставляется ни одна запись
17 фев 05, 14:54    [1328333]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Я же говорю что при FIRSTROW = 2 не вставляется ни одна запись
1. Можете приаттачить к посту файл 'c:\1.csv' и опубликовать скрипт, которым пытаетесь это сделать?
2. Откуда вообще берется 1.csv, т.е. есть ли возможность менять его формат?
3. Кроме bulk insert существует еще много способов "затащить" данные из файла, т.е. сформулируйте более широко Вашу задачу и, думаю, здесь на форуме подскажут наиболее эффективное решение...
17 фев 05, 15:12    [1328400]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
LR
1. Можете приаттачить к посту файл 'c:\1.csv' и опубликовать скрипт, которым пытаетесь это сделать?


Могу, скрипт в первом посту опубликовывал

LR
2. Откуда вообще берется 1.csv, т.е. есть ли возможность менять его формат?


Этот файл присылается некоей ангентской программой, агентских точек много, как в одну из них приходит клиент информация по нему в виде этого файла присылается в центральный офис для обработки

LR
3. Кроме bulk insert существует еще много способов "затащить" данные из файла, т.е. сформулируйте более широко Вашу задачу и, думаю, здесь на форуме подскажут наиболее эффективное решение...


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

К сообщению приложен файл (1.csv - 54bytes) cкачать
17 фев 05, 16:02    [1328624]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Не знаю, но у меня с Вашим файлом пример (там где врем.табл.используется) нормально отрабатывает
(1 row(s) affected)

idapp       CHNNL      FIO                                 
----------- ---------- ----------------------------------- 
53          TC85a      Иванов И.И.
17 фев 05, 16:30    [1328733]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
Tаrantino
Member

Откуда:
Сообщений: 3767
У вас нет поля [f_AppImportID]
17 фев 05, 16:35    [1328753]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, csv и кавычки  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Tаrantino
У вас нет поля [f_AppImportID]

...
insert t_AppImport(idapp,CHNNL,FIO)
select idapp,CHNNL,FIO from #t
drop table #t
17 фев 05, 17:10    [1328959]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить