замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 10.06.2020, 07:51 SandalTree 10.06.2020, 02:16 Цитата ... У меня два выхода, изменить в своей таблице тип поля с bigint на varchar, но что-то мне подсказывает, что поля такого типа будут хуже индексироваться, если я не прав, то поправьте меня, плюс перезалить все данные нужно будет, хотя, возможно, есть какой-то более оперативный способ изменения типа поля. Поэтому я решил на лету менять буквы на цифры (на ASCII код буквы), чтобы на выходе было то, что можно вставить в поле с типом bigint, и чтобы поле оставалось уникальным. Хорошо, что пока буквы в определенных местах и можно просто решить проблему. А если завтра буквы начнут появляться в любом месте, то тогда что? Придется перебирать все позиции в строке и менять всё, неважно буква или цифра, на ASCII код. :( 1. Сколько у вас разных букв? Если 9 или меньше, то тупо меняете на 1-9 Если первый символ не может быть буквой, то у вас есть опция использовать ещё и "0" 2. Использовать BINARY_CHECKSUM. Однако, там возможны дубликаты, поэтому можете сделать так Код: SQL 1. 2. 3.
... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
10.06.2020, 15:47 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 10.06.2020, 15:35 vad72 10.06.2020, 11:14 ну да, главное чтобы без коллизий. Я выше писал зачем, нужно "текстовое поле" засунуть в bigint. SAP разрабатывали на "экстремальные ситуации". Подозреваю что у топик-стартера не этот случай и возможно дажи хватило-бы INT. Может быть просто создать справочник с INT IDENTITY(-2147483647,1). Не думаю что там будет больше 4 миллиардов значений. ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
10.06.2020, 15:52 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 10.06.2020, 15:35 Итог - ежели схему можно поменять убрав нафиг бигинт, но нужно поменять и забыть. Конкретно сейчас в этой табличке 239 672 048 записей. Что будет со скоростью работы sql-запросов, процедур ? Я боюсь, что скорость может снизится, а мне такое не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 16:04 |
|
замена букв на цифры в MS SQL
|
|
---|---|
#18+
eNose 10.06.2020, 15:33 Вадик, извини за вопрос. Ты гуманитарий? ... |
|
:
|
|
10.06.2020, 16:19 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 10.06.2020, 16:19 военный, не знаю куда их, но круглое носим, квадратное катаем. Вообще сандаль дело говорит, вполне годный вариант. Любой из них. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 18:45 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
и за ради чего этот изврат? давайте попросим вада72 полный идентификатор, не удивлюсь. если вдруг там окажется guid. странно, что ещё никто не предложил варианта с дополнительным полем. ... |
|||
...верить в наше время нельзя никому, порой даже самому себе. Мне - можно. (с)
:
Нравится:
Не нравится:
|
|||
10.06.2020, 21:13 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
Бояннизд02 10.06.2020, 21:13 и за ради чего этот изврат? давайте попросим вада72 полный идентификатор, не удивлюсь. если вдруг там окажется guid. странно, что ещё никто не предложил варианта с дополнительным полем. Это поле, которое 15 лет существует - primary key таблицы, через которое, естественно, идет связь на другие таблицы в БД. И так как на том конце дегенераты, которые не могут подготовить файл для импорта, то мне приходится на моей стороне, где собираются все данные со всех компаний идти на один из шагов: 1. Изменить все праймеры кей в существующих таблицах с bigint на varchar (с учетом, что кол-во записей несколько миллиардов в БД, это займет некоторое время). Скорость выборок упадет. 2. Но ходу при импорте данных из файла преобразовывать (хешировать) их столбец с буквами в bigint (и там не guid). Тут, как по мне, никаких проблем не должно возникнуть, сейчас так и настроил. 3. Увольнять персонал на том конце, пока не сделают поле типа bigint (но я на такое никогда не иду, все мы люди, нужно друг другу помогать, тем более, что там SAP, и они и так там всё в "рукопашную" делают, бедняги). P.S. Кстати, они мне еще одну задачку добавили, стали отрицательные числа в текстовый файл писать в виде 1234.56- . Тоже надо подумать, как это исправить на лету. ... |
|||
:
Изменено: 11.06.2020, 08:25 - vad72
Нравится:
Не нравится:
|
|||
11.06.2020, 08:23 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 10.06.2020, 18:45 Надеюсь там шота ценное и бакапы как правило уже проепаны? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 08:31 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
SandalTree 10.06.2020, 15:52 SAP разрабатывали на "экстремальные ситуации". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 08:36 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
так если обратная связь не нужна, то нахера этот огород? ... |
|||
...верить в наше время нельзя никому, порой даже самому себе. Мне - можно. (с)
:
Нравится:
Не нравится:
|
|||
11.06.2020, 13:52 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
Бояннизд02 11.06.2020, 13:52 так если обратная связь не нужна, то нахера этот огород? А вот если бы буквы попадались в любом месте, то пришлось бы "пробегаться" по-символьно и делать замену каждого символа через анси в трехзначную цифру. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:02 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 08:31 Она ценная только для меня, так как я использую её для выполнения своих непосредственных обязанностей - анализа и аудита компаний семи областей Украины. На основе этих данных акционеры принимают свои управленческие решения. Я просто у них инструмент для анализа. А мне для анализа нужен массив данных. Второй момент - можете ли вы каким-то образом подтвердить правдивость ваших слов, в случае если ответ на оба вопроса не является - РФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 14:41 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
Акционеры из разных стран, я из Киева. ... |
|||
:
Изменено: 11.06.2020, 15:03 - vad72
Нравится:
Не нравится:
|
|||
11.06.2020, 15:03 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 08:36 SandalTree 10.06.2020, 15:52 SAP разрабатывали на "экстремальные ситуации". Ну тогда вам нужно просто сделать табличку с переназначениями, в которой каждый код из САП будет соответствовать коду в INT IDENTITY(-2147483647,1). ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
11.06.2020, 15:20 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 14:02 Бояннизд02 11.06.2020, 13:52 так если обратная связь не нужна, то нахера этот огород? А вот если бы буквы попадались в любом месте, то пришлось бы "пробегаться" по-символьно и делать замену каждого символа через анси в трехзначную цифру. Вы потеряете больше на ежедневные конвертации чем вместо 8 байт в PK будете юзать 16. Главное что кластерный индекс делайте INT. ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
11.06.2020, 15:23 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
SandalTree 11.06.2020, 15:20 Я знал бизнес, который так обанкротился. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 15:43 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 15:03 Акционеры из разных стран, я из Киева. --------------- Теперь по сути вашего вопроса. Менять нечто там в id для данных приходящих извне - бред. Вам фактически нужно сделать чтобы id (PK) менялся самостоятельно хоть как IDENTITY, хоть через секвенс. Пофиг. А для сопоставления нужно попросту использовать доп. поле refExternalID, где вы на всяк случай будете сохранять ID из внешней системы. Вот и все. * Когда речь идет о модификации таблиц с мульярдами строк, то нужно понимать, что это будет крайне долго и затратно по логу. Следствие - возможно имеет смысл создать таблицу нужной структуры - слить туда данные неспешно, дальше грохнуть исходную, а целевую переименовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 16:30 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 11.06.2020, 16:30 vad72 11.06.2020, 15:03 Акционеры из разных стран, я из Киева. --------------- Теперь по сути вашего вопроса. Менять нечто там в id для данных приходящих извне - бред. Вам фактически нужно сделать чтобы id (PK) менялся самостоятельно хоть как IDENTITY, хоть через секвенс. Пофиг. А для сопоставления нужно попросту использовать доп. поле refExternalID, где вы на всяк случай будете сохранять ID из внешней системы. Вот и все. * Когда речь идет о модификации таблиц с мульярдами строк, то нужно понимать, что это будет крайне долго и затратно по логу. Следствие - возможно имеет смысл создать таблицу нужной структуры - слить туда данные неспешно, дальше грохнуть исходную, а целевую переименовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 16:54 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 16:54 kDn 11.06.2020, 16:30 vad72 11.06.2020, 15:03 ... --------------- Теперь по сути вашего вопроса. Менять нечто там в id для данных приходящих извне - бред. Вам фактически нужно сделать чтобы id (PK) менялся самостоятельно хоть как IDENTITY, хоть через секвенс. Пофиг. А для сопоставления нужно попросту использовать доп. поле refExternalID, где вы на всяк случай будете сохранять ID из внешней системы. Вот и все. * Когда речь идет о модификации таблиц с мульярдами строк, то нужно понимать, что это будет крайне долго и затратно по логу. Следствие - возможно имеет смысл создать таблицу нужной структуры - слить туда данные неспешно, дальше грохнуть исходную, а целевую переименовать. Во первых, BIGINT будет не сильно быстрее чем оригинал, но медленнее чем INT. Если вам нужны "предыдущие значения", скиньте их в "исторический справочник" и дело с концом. Так будет максимально быстро работать. ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
11.06.2020, 17:14 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 11.06.2020, 16:54 Ну, я не знаю, какой смысл еще одного поля, если можно преобразовать исходное в BIGINT, даже с возможностью выкрутить из него обратно начальное значение, если понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2020, 17:30 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 11.06.2020, 17:30 vad72 11.06.2020, 16:54 Ну, я не знаю, какой смысл еще одного поля, если можно преобразовать исходное в BIGINT, даже с возможностью выкрутить из него обратно начальное значение, если понадобится. Ещё на много-много лет хватит, а к тому времени он уже на пенсию уйдёт. ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
11.06.2020, 18:15 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
kDn 11.06.2020, 16:30 Заниматься же преобразованием чего-то внешнего по загадочным законам - бред. Чем быстрее до вас это дойдет, тем меньше проблем огребете. Разве что, БД эта исключительно для моего личного пользования по работе. Просто я решил брать "первичные" данные к себе в БД, без изменений (просто пробиваю контрольные суммы где нужно) и тут у себя на месте делать различные отчеты для себя перед аудитом (в принципе, благодаря этим данным я и знаю, куда ехать и куда тыкать носом). Ну и внеплановые отчеты срочные для акционеров. Можно было бы пойти другим путем, с мест просить присылать готовые отчеты, а потом их тут сбивать в один, как делают некоторые отделы, но это, я считаю, не эффективно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 07:58 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
SandalTree 11.06.2020, 18:15 Ему инта вполне хватит, у него 200 миллионов значений против 4 миллиардов. Ещё на много-много лет хватит, а к тому времени он уже на пенсию уйдёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2020, 08:35 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
vad72 12.06.2020, 08:35 SandalTree 11.06.2020, 18:15 Ему инта вполне хватит, у него 200 миллионов значений против 4 миллиардов. Ещё на много-много лет хватит, а к тому времени он уже на пенсию уйдёт. Ну или оставьте всё как есть и не пудрите людям мозги. ... |
|||
А вы шо думали, всё так просто?
:
Нравится:
Не нравится:
|
|||
12.06.2020, 14:11 |
|
замена букв на цифры в MS SQL
|
|||
---|---|---|---|
#18+
SandalTree 12.06.2020, 14:11 Какая разница сколько там цифр, главное сколько там всего записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 08:06 |
|
Start [/forum-old/topic.php?fid=2&fpage=2&tid=48282&startmsg=first&offset=2]: |
0ms |
get settings: |
1ms |
get forum list: |
2ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
30ms |
get topic data: |
4ms |
get forum data: |
0ms |
get page messages: |
54ms |
update_topic_read_status (48282): 15.06.2020 08:06:16: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
3ms |
others: | 35ms |
total: | 129ms |
0 / 0 |