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

Откуда:
Сообщений: 7
Здравствуйте уважаемые форумчане!
имеется такая проблема.
Нужно было импортировать данные из удаленного сервера my sql.
выполнил запрос, сохранил его как txt (потому что данных очень много)
при импорте через мастер импорта и экспорта столкнулся с проблемой типизации.
для числового типа я ставлю денежный, для текстового - текстовый. к текстовому типу у него претензий нет, а вот к числовому:
Ошибка 0xc02020a1: Задача потока данных 1: Ошибка преобразования данных. При преобразовании данных для столбца ""Доход руб"" возращено значение состояния 2 и текст состояния "Невозможно преобразовать значение из-за возможной потери данных.".
(Мастер импорта и экспорта SQL Server)

Если я правильно понимаю эта ошибка означает, что данные, содержащиеся в строке, слишком длинные? но в числовых полях длинна данных не привышает 20 символов, а если и больше (каким то образом) - большая часть - после запятой и ее можно обрезать. по сути сделав целочисленный тип вроде int. Но как это сделать?
Или может есть другой способ импорта данных из my sql?
17 апр 14, 07:40    [15894191]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
lionforever
но в числовых полях длинна данных не привышает 20 символов Но как это сделать?

decimal(n, m)


lionforever
Или может есть другой способ импорта данных из my sql?

1. Импортируешь все как текст в промежуточную таблицу.
2. Потом разбираешься.
17 апр 14, 07:54    [15894208]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

Откуда:
Сообщений: 7
aleks2,
так я и импортировал все в txt.
И я пытался decimal использовать. выдает ошибку.
может можно преобразовать данные в int?
17 апр 14, 07:56    [15894212]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
lionforever
aleks2,
так я и импортировал все в txt.
И я пытался decimal использовать. выдает ошибку.
может можно преобразовать данные в int?


1. Не надо путать импорт с экспортом.
2. Если ты не путаешь и данные действительно загружены в таблицу - найди строку, на которой спотыкается, и смотри чего там не так.
17 апр 14, 08:27    [15894238]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
Ennor Tiegael
Member

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

Поди, запятая в качестве разделителя десятичной части? Точка нужна.
17 апр 14, 08:41    [15894255]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

Откуда:
Сообщений: 7
Ennor Tiegael,

да нет, точка стоит...
17 апр 14, 08:50    [15894271]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
lionforever
Ennor Tiegael,

да нет, точка стоит...


Т.е. ты нашел строчку на которой спотыкается?
Врешь.
17 апр 14, 09:01    [15894302]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3394
Ну, как вариант еще - в сиквеле тип money имеет 4 знака после запятой. Если в файле есть значения с большим количеством знаков, может начать ругаться, причем скорее всего именно таким образом.

Может, лучше сначала все-таки в numeric(38,15) или varchar?
17 апр 14, 09:06    [15894314]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

Откуда:
Сообщений: 7
в varchar он и так находится varchar(50)
попытался изменить тип на numeric - получил ошибку:
'01-02' table
- Unable to modify table.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
17 апр 14, 09:29    [15894387]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
Не чахни, страдалец, запусти
declare @Fileld varchar(50), @RowID int, @number money;

declare x CURSOR FORWARD_ONLY for select aFileld, aRowID from aTable;

open x;

fetch next from x into @Fileld, @RowID;

while @@FETCH_STATUS = 0
begin
    raiserror('aFileld = %s, aRowID = %i', 0,1, @Fileld, @RowID);

    set @number = aFileld;

    fetch next from x into @Fileld, @RowID;
end;

close x;
deallocate x;
17 апр 14, 10:21    [15894645]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
KRS544
Member

Откуда:
Сообщений: 497
Денежный это money?
Money: От -922 337 203 685 477,5808 до 922 337 203 685 477,5807
Что меньше 20 знаков
17 апр 14, 11:14    [15894981]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
KRS544
Member

Откуда:
Сообщений: 497
А так ерунда какая-то - это где у вас суммы в рублях 20 знаками измеряются?
17 апр 14, 11:20    [15895037]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
lionforever
Или может есть другой способ импорта данных из my sql?


это вообще в другой форум.
17 апр 14, 11:46    [15895201]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
это я к тому, что данные надо приготовить уже на сервере MySQL в нужном виде.
17 апр 14, 11:48    [15895207]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

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

А каким образом? я ведь не админ на мускуле, а простой юзер. я могу просто сделать запрос на выгрузку данных и все...
18 апр 14, 03:53    [15899058]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

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

данные везде однотипные и вводятся компьютером. если точка в первых записях - то она везде.
18 апр 14, 04:58    [15899088]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
lionforever
aleks2,

данные везде однотипные и вводятся компьютером. если точка в первых записях - то она везде.


Ты чо меня уговариваешь? Ты компутер уговаривай.

ЗЫ. Я тащусь с этих гуманитариев.
Ты нашел строку на которой затык?
18 апр 14, 05:48    [15899101]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
lionforever
Member

Откуда:
Сообщений: 7
aleks2,
нет. в поле типа "дата" - нашел, но в числовом нет.
21 апр 14, 08:05    [15908800]     Ответить | Цитировать Сообщить модератору
 Re: типизация данных в txt файле при импорте из my sql  [new]
aleks2
Guest
lionforever
aleks2,
нет. в поле типа "дата" - нашел, но в числовом нет.

Т.е. скрипт

declare @Fileld varchar(50), @RowID int, @number money;

declare x CURSOR FORWARD_ONLY for select aFileld, aRowID from aTable;

open x;

fetch next from x into @Fileld, @RowID;

while @@FETCH_STATUS = 0
begin
    raiserror('aFileld = %s, aRowID = %i', 0,1, @Fileld, @RowID);

    set @number = @Fileld;

    fetch next from x into @Fileld, @RowID;
end;

close x;
deallocate x;


отработал и не сломался?
Значит ты чего-то недоговариваешь.
21 апр 14, 08:19    [15908825]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить