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

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Всем доброе время суток.

Проблема у меня в том, что импортируемый CSV-файл вместо того что бы иметь NULL, при импорте имеет строковое значение \N

Соотвественно если я использую bulk insert и правильные тип данных колонок (дата, число и т. п., а не строковые), то я получаю ошибку.

Хотя до этого я локально открыл этот же CSV-файл OpenRowSet-ом и он сам (для не строковых) установил "нулл". Хотя мне желательно и "для строковых со значением \N устанавливать нулл".

В файлах форматирования я не нашёл "аналога" nullif

Тем более не нашёл глобального "nullif"

На первом скрине результат OpenRowSet
На втором Bulk Insert, но все типы данных изменены на строковый.

в каких колонках в будущем такое возможно - я не знаю

Проблема осложняется тем что на сервере при использовании OpenRowSet выдаётся ошибка

OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver] Your network access was interrupted. To continue, close the database, and then open it again.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x3404 Thread 0x2008 DBC 0x203f8038 Text'.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x3404 Thread 0x2008 DBC 0x203f8038 Text'.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".


Которую я решить не смог.

К сообщению приложен файл. Размер - 67Kb
12 фев 15, 17:44    [17257484]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
второй скрин

К сообщению приложен файл. Размер - 63Kb
12 фев 15, 17:44    [17257488]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Maxx_UA
Guest
автор
На первом скрине результат OpenRowSet
На втором Bulk Insert, но все типы данных изменены на строковый.

А что мешает сделать балк инсерт из опенроусета то ?
12 фев 15, 17:54    [17257537]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Maxx_UA,

Спасибо за ответ,
но он работает так же (только файл форматирования более обязательный)
Ну и ошибка соотвественно та же.
Создал руками файл на скорую руку.

Проблему замены этого на НУЛЛ - это не решает.

Кстати, может знаете что за ошибка при создании файла форматирования


Enter the file storage type of field minutes_logged_last_week [char]:
Enter prefix-length of field minutes_logged_last_week [2]:

Enter the file storage type of field state_id [char]:
Enter prefix-length of field state_id [2]:

Enter the file storage type of field first_login_date [char]:
Enter prefix-length of field first_login_date [2]:
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Format file could not be opene
d. Invalid name specified or access denied.




При том что доступы вроде как есть в папку для "всех пользователей".
12 фев 15, 18:54    [17257828]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
NIIIK,
12 фев 15, 18:55    [17257830]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Ох...

К сообщению приложен файл. Размер - 51Kb
12 фев 15, 18:55    [17257832]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
У кого-нить есть идеи?
12 фев 15, 20:36    [17258079]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
NIIIK
У кого-нить есть идеи?
Все как обычно: залить в промежуточную таблицу, очистить данные, залить в основную.
12 фев 15, 21:06    [17258147]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
invm,

Спасибо, но это то что я старался обойти значально.

А эта ошибка при выполнении запроса вида

select * from openrowset('MSDASQL'
               ,'Driver={Microsoft Access Text Driver (*.txt, *.csv)}'
               ,'select * from C:\Temp\test1.CSV')


как-нить решается?
12 фев 15, 21:28    [17258193]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Ёху!

заработало.

http://visakhm.blogspot.ru/2013/12/how-to-solve-microsoftaceoledb120-error.html
Помогла эта ссыка и установка всем Temp папкам до которых смог добраться тупо прав для Everyone на полный доступ к папкам.

По крайней мере знаю где проблему искать

Заработали оба варианта "не балк", но решение помогла нагуглить ошибка именно с "Microsoft.ACE.OLEDB.12.0"

Жалко что вариант с Bulk не совсем хорошо срабатывает. Хотя есть вероятность что при всех костялях он будет быстрее.
Так же жалко что для строковых всё ещё остаётся \N
Его всё равно придётся "чистить".

А мистер Тщеславный из Прибалтики убеждал меня в неправильности строки и что я сам дурак и т. п. в соседней ветке.

К сообщению приложен файл. Размер - 93Kb
12 фев 15, 23:44    [17258471]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
А мистер Тщеславный из Прибалтики убеждал меня в неправильности строки и что я сам дурак и т. п. в соседней ветке.

А тот мистер остался при своем мнении о вас.
13 фев 15, 09:27    [17259060]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
А что дуракам помощь меньше нужна :) ?!
13 фев 15, 09:43    [17259103]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
А что дуракам помощь меньше нужна :) ?!

Не в коня корм
13 фев 15, 09:45    [17259109]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Maxx_UA
Guest
автор
А мистер Тщеславный из Прибалтики убеждал меня в неправильности строки и что я сам дурак и т. п. в соседней ветке.

а вы сами посмотрите на рабочий пример ваш и то что вы постили до тог как )
Ваша проблема решаеться через промежуточную таблицу- если не можете поменять формат файла..в нее балком .патом препарации и чиста с нее после почистики тоже балком например в основную. Называеться сие ETL процесс
13 фев 15, 10:14    [17259237]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Maxx_UA,

Начиная с этого
Селект из csv-файла

точно рабочий да и начал я по факту с него.

Рассказы про неправильные строки коннекта а не про отсутствующие доступы к вреенным папкам тут Селект из csv-файла
13 фев 15, 11:24    [17259598]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Maxx_UA
Guest
NIIIK - вапроз ві прикаліваетесь ?
По вашей 1 ссілка запрос имеет вид

автор
OpenRowset('MSDASQL', 'Driver={Microsoft Access Text Driver (*.txt, *.csv)};DefaultDir=C:\Temp','select * from test.csv')

А теперь ВНИМАТЕЛЬНО смотрите на свою послоедную картинку из SSMSприведенную вами же
13 фев 15, 11:36    [17259661]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Maxx_UA,

1) Я не бачу разницы, це одинаковый код що я показав ссылкой и он робить то те ж саме (форматирование 1нше). Це в1н Селект из csv-файла
Могу скрин дать как сейчас.
2) Ошибка предоставлена к РАБОЧЕМУ коду.

Просто кто-то набивает счётчик сообщение и зазвезился. Так ещё провоцирует конфликты и напрягает атмосферу вместо того что бы "либо отвечать, либо не мешать"



ВСЕМ,
Ещё одна проблема с Bulk insert

В файле CSV есть строковые поля. Но есть "строки" которые взяты в кавычки (меньшая часть) только есть в значении есть запятая (разделитель). Если бы все строки были бы в кавычках или разделитель был бы другой - я бы ещё в файле форматирования задал как окончание строки ," и ", для колонок (так вроде можно). Но тут у меня это НЕ получается.

При этом OpenRowSetc ODBC драйверами спокойно сам понимает что нужно делать.

Есть какие-нибудь варианты решешения такой проблемы?

Заранее спасибо.
13 фев 15, 12:36    [17260214]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
Просто кто-то набивает счётчик сообщение и зазвезился. Так ещё провоцирует конфликты и напрягает атмосферу вместо того что бы "либо отвечать, либо не мешать"

Мальчик, свои шпильки прибереги для родных и близких.
А правила будешь устанавливать на своем личном форуме.
13 фев 15, 12:40    [17260253]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Maxx
Member [скрыт]

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

Поперше - не треба гугул траслейту :)
Подруге - складеться враження шо Тагіл шо Ростовська губернія майже одне и те саме

Ну и третье - нет кнопки сделать все. У вас файл по описанию набор разнородных разделителей с отфонарными данными.
У вас 2 основных пути
- Или приводить файл к "нормальному" виду
- Иили использовать промежуточную таблицу
13 фев 15, 13:22    [17260603]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
o-o
Guest
Maxx, не ведись!!!
NIIIK, я вам сейчас покажу картинкой, где наврано, и давайте уже прекратите наезды.
не одно и то же написано, там у вас точка с запятой вместо запятой + не хватает слова Access
вам Махх мирно сказал, а вы обхрюкиваете,
так кто напрягает обстановку-то?
я промолчу про второго участника, про его манеру отвечать, но он блин ОТВЕЧАЕТ,
может себе позволить, не нравятся ответы, идите мимо.
а вы СПРАШИВАЕТЕ, но хамите, разницу видите?
ненавижу расисткие разборки, вы нафига на украинском написали, похвастать вторым языком
или указать кому-то, что на русском не понимает?
зачем географическое положение всем напоминаете, мы типа не в курсе дел, кто откуда, или это все меняет?

да я так злюсь, что получил вообще левый человек, Winnipuh в соседней теме,
я же на него вываливаю свое настроение, изгаженное этим топиком, вместо того, чтобы спокойно сказать

К сообщению приложен файл. Размер - 48Kb
13 фев 15, 13:45    [17260797]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
Maxx
Member [скрыт]

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

да я не ведусь..меня уже просто забавляет
13 фев 15, 14:06    [17260939]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
o-o
Guest
Maxx,

ну и хорошо :)
я тогда уже тоже не злюсь.
мне в принципе тоже смешно, если сервер пишет про неверный атрибут строки соединения,
то как можножно считать, что он с кем-то в сговоре и это назло пишет?
логично же проверить атрибуты, имя провайдера в первую очередь...
13 фев 15, 14:41    [17261152]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory
NIIIK
Просто кто-то набивает счётчик сообщение и зазвезился. Так ещё провоцирует конфликты и напрягает атмосферу вместо того что бы "либо отвечать, либо не мешать"

Мальчик, свои шпильки прибереги для родных и близких.
А правила будешь устанавливать на своем личном форуме.


Ещё одно сообщение не по сути?

А фидбеки о форуме и его модераторах я буду давать без консультаций с кем-либо.
Это нормально что "пользователь", "клиент" и т. п. даёт характеристику ресурсу.
Грубо говоря когда говорит "спасибо, всё было офигенно", а когда и наоборот.
Тем более у меня личного суверенитета достаточно и что для кого прибегать я тоже решаю сам.

Maxx
NIIIK,

Поперше - не треба гугул траслейту :)
Подруге - складеться враження шо Тагіл шо Ростовська губернія майже одне и те саме

Ну и третье - нет кнопки сделать все. У вас файл по описанию набор разнородных разделителей с отфонарными данными.
У вас 2 основных пути
- Или приводить файл к "нормальному" виду
- Иили использовать промежуточную таблицу


А бабушку с Винницкой области (Теплецкий район, село Костюкивка) тоже не треба со всеми родственниками иметь?
Или двоюродного дядю с двоюродной бабушкой в Горловке?
Или жить в Таганроге где половина стариков на сурджике балакают?
А какие у нас каналы в "антенные времена" ловились?
И во вторых впечатление у вас обманичивое и на Тагил так же.

Я понимаю что нет "кнопки", но обычно есть типовые решения и вопрос задавался для того что бы не изобретать велосипед, причём кривой. В случае с запятой внутри строки в кавычках всё же БалкИнсёрт пока в принципе отпадает.

o-o,
А вы точно свой скрин выдрали не "до" сообщения на которое я дал ссылку, а после?
Где у нас наезд был?
Хотя давать достоверный фидбэк и говорить "спасибо" разного уровня - это моё право.
Тем более где наезды на Макса?
Тот код который он привёл цитатой так же рабочий.
Где я начинаю вопрос с хамства, да и вообще хамлю?

Наверное ответ был на украинском потом что вопрос был на украинском или не?
Чего вы не интересуетесь почему с него вообще начали? Там вообще был хоть какой-то наезд на Украину и т. п.? Что за маразм? У нас тут в Таганроге (да и в РФии) не мало смешанных семей, тем более это один народ, а даже не "братский". И вообще не путайте страну и государство. Две разные сущности. Страна будет при любом государстве, я уже пожил в двух государствах и старше одного из них. Для меня Украина ближе чем Ростов на Дону (да и ехать в дьютик на Мариупольском шоссе реально легче чем в Ростов).
Для меня даже гражданство вторично. Это просто связка человека и государства (и их кстати может быть много или вообще не быть). А русские (не россияне) кубанцы и русские украинцы и русские уральцы и русские северяне и т. д. для меня тупо один народ как северные и южные корейцы один народ с одной странной на территории которой два государства. Украинец в моём понимании - это "гражданин государства Украина", именно "гражданин". Как можно было перевести стрелки на то что я указывают кто где живёт да ещё в качестве аргумента за своё правоту? Да и потом вести разговоры о сравнении с Тагилом.

Я вроде тоже "изгаженное настроение" ни на кого не вываливаю. Уж не знаю какую картинку вы там у себя в голове держите.
Но я считаю нормальным и обратную связь с форумом держать, тем более если мне надо что бы он становился лучше, а не хуже и давать оценку, может даже сравнительную ответам/помощи и т. п.

Собственно если я подойду к кому-нить в том же Питере и спрошу "как пройти на Дворцовую площадь..." и т. п. и мне будут отвечать "понаехал... даже карту не взял... в телефоне что навигатора нету..." и т. п. - я тоже дам оценку жителю культурной столицы.

o-o
Maxx,

ну и хорошо :)
я тогда уже тоже не злюсь.
мне в принципе тоже смешно, если сервер пишет про неверный атрибут строки соединения,
то как можножно считать, что он с кем-то в сговоре и это назло пишет?
логично же проверить атрибуты, имя провайдера в первую очередь...


ох... ещё раз... начиная с того сообщения сервер на сервере писал

ПисалСервер
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver] Your network access was interrupted. To continue, close the database, and then open it again.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x4578 Thread 0x3240 DBC 0x21988038 Text'.".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC Text Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x4578 Thread 0x3240 DBC 0x21988038 Text'.".
Msg 7303, Level 16, State 1, Line 7
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".


И это не ошибка в строке.
Сейчас это работает, без всяких изменений. Это решалось настройкой доступа к папкам temp

как описано тут

Step 2: Check the permissions on the Temp folder



This is needed because the provider uses the temp folder while retrieving the data. The folder can be one of the below based on whether you use a local system account or network domain account.

For network accounts, folder is

:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp

and for local system account its :\Windows\ServiceProfiles\LocalService\AppData\Local\Temp

Right click on this folder and give it read write access to the account executing the code.


Та строка где использовался не Microsoft Access Text Driver была "перед" и то попала случайно, потому что начал тестить именно с "Microsoft Access Text Driver". Начал я с неё потому что начал с конца той темы
Селект из csv-файла
Остальное просто пробовал. Этот вариант в изначальном топике попал в сообщение (а не первый) скорее по запарке из-за того что дёргают постоянно.
13 фев 15, 17:20    [17262430]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
o-o
Guest
NIIIK,

мое выступление было в защиту Махх-а и справедливости,
достали уже его банить/указывать ему на Украину всеми способами.
И ВООБЩЕ УКАЗЫВАТь КОМУ-ЛИБО НА ЕГО ГЕОГРАФИЧЕСКОЕ ПОЛОЖЕНИЕ.
вы не видите наезд, а я вижу, конкретно в вашем переходе на укр., но здесь обсуждать больше не собираюсь.

еще раз картинка с ***раскрытой ошибкой*** и Глорин пост о том, что дело именно в строке подключения,
он вам просто еще раз ткнул туда, о чем СЕРВЕР написал.
я ровно про то, что приведено на картинке.
за всей ругачкой нет охоты следить, уж извините.

кого-то другого защищать, если вы на это думаете, мне совсем не сдалось.
и все последующие строки соединения тоже не буду проверять, мне хватило начала той темы.
равно как и вашего коммента в этой теме в ответ на дельный совет invm.

К сообщению приложен файл. Размер - 59Kb
13 фев 15, 18:17    [17262787]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert и нуловые значения  [new]
o-o
Guest
+ to NIIIK
NIIIK
Наверное ответ был на украинском потом что вопрос был на украинском или не?

вопрос был на русском, набран не в той раскладке, это наказуемо?
на укр. "вопрос" = "питання", но раз вам не видно или вы просто этого не поняли,
бог с вами и извиняюсь за свой выпад.
сомневаюсь я только, что вы именно поэтому на гугло-транслэйто-украинском заговорили
13 фев 15, 18:39    [17262914]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить