Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 August 26

OM

Oleg Makarikhin in SqlCom.ru - Стиль жизни SQL
weakSB
Доброго времени суток, товарищи!
Подскажите, пожалуйста, а как бы добиться кириллицы в ms sql server на linux ?)
Я использую sqlcmd.
Вот такое выполняю после создания БД: ALTER DATABASE mydbtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Далее, вот так вношу записи:  
INSERT INTO P (mystr) VALUES (N'Строчка кириллицей',);
Но, к сожалению, когда смотрю что в таблице: SELECT * From P
На экране распечатываются одни "???" (знаки вопроса, в общем.)
а в студии нормально кириллица вносится или отображается?
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
karb0f0s
еще непонятно в какой кодировке сохранен .sql файл. если внутри не юникод, может и вставка идет мусорная
о, вот это дало результат.

пересохранил  файл с sql скриптом вот так: iconv -f iso-8859-1 -t utf-8 -o insert_new.sql insert.sql  

и результат теперь вместо "???"(знаков вопроса) - абракадабра "61ÑÅÐÃÅÅÂ ÑÅÐÃÅÉ   "
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Oleg Makarikhin
а в студии нормально кириллица вносится или отображается?
да
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
karb0f0s
поле для вставки точно nvarchar?
Да)

CREATE TABLE P(
P_id int primary key, /* id*/
FIO nvarchar(50) not null, /*ФИО */ ....
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Oleg Makarikhin
-i create.sql
спасибо!)  теперь без cat запускаю )
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Alibek Kalzhanov
тогда попробуйте export LC_ALL="ru_RU.UTF8" - это только для текущей сессии
да, сама консоль у меня кириллица - всё отлично отображает )
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
weakSB
о, вот это дало результат.

пересохранил  файл с sql скриптом вот так: iconv -f iso-8859-1 -t utf-8 -o insert_new.sql insert.sql  

и результат теперь вместо "???"(знаков вопроса) - абракадабра "61ÑÅÐÃÅÅÂ ÑÅÐÃÅÉ   "
ISO 8859-1 и Latin-1) — кодовая страница, предназначенная для западноевропейских языков
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Sergey M
ISO 8859-1 и Latin-1) — кодовая страница, предназначенная для западноевропейских языков
поэтому и изменил на utf-8 )
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
Но если кириллица на сервере по умолчанию и nvarchar  поле, то должен брать кириллицу.
Сделай SELECT DATABASEPROPERTYEX('master', 'Collation'), только вместо мастер имя своей базы поставь
источник

ТО

ТаТиана Од in SqlCom.ru - Стиль жизни SQL
Добрый день. Нужен совет, необходимо секционировать Кластерный индекс (PK) на оочень большой таблице (2,6 млрд записей) в МСскуле - для этого нужно сначала DROP CONSTRAINT [PK..., а потом ADD  CONSTRAINT [PK... (+ ,[date] ASC), но уже согласно схемы секционирования.
Пыталась дропнуть констранту - после 2,5 часов потуг ЛОГ выжрал все место на диске .... ЛОГ то можно перенести на другой диск, но не очень понимаю, сколько ему места надо (0,5 Тб не хватило).
Вопрос  - скул пересоздает таблицу при удалении PK? Если да, то  увеличится ли объем таблицы, если индекс был комрессирован?
источник

DS

Denis Suhotin in SqlCom.ru - Стиль жизни SQL
ТаТиана Од
Добрый день. Нужен совет, необходимо секционировать Кластерный индекс (PK) на оочень большой таблице (2,6 млрд записей) в МСскуле - для этого нужно сначала DROP CONSTRAINT [PK..., а потом ADD  CONSTRAINT [PK... (+ ,[date] ASC), но уже согласно схемы секционирования.
Пыталась дропнуть констранту - после 2,5 часов потуг ЛОГ выжрал все место на диске .... ЛОГ то можно перенести на другой диск, но не очень понимаю, сколько ему места надо (0,5 Тб не хватило).
Вопрос  - скул пересоздает таблицу при удалении PK? Если да, то  увеличится ли объем таблицы, если индекс был комрессирован?
По сути да, пересоздаёт. В Вашем случае, мне кажется, было бы разумнее создать рядом пустую таблицу с нужной схемой и реплицировать в неё изменения из старой, параллельно переливая исторические данные. Когда таблицы будут синхронизированы - просто переименовать новую в старую, а старую дропнуть, или ещё что-то в таком роде.
источник

ТО

ТаТиана Од in SqlCom.ru - Стиль жизни SQL
Denis Suhotin
По сути да, пересоздаёт. В Вашем случае, мне кажется, было бы разумнее создать рядом пустую таблицу с нужной схемой и реплицировать в неё изменения из старой, параллельно переливая исторические данные. Когда таблицы будут синхронизированы - просто переименовать новую в старую, а старую дропнуть, или ещё что-то в таком роде.
Была такая мысль, на продовой так и прийдется делать... но пока над тестовой хочу поиздеваться)
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Sergey M
Но если кириллица на сервере по умолчанию и nvarchar  поле, то должен брать кириллицу.
Сделай SELECT DATABASEPROPERTYEX('master', 'Collation'), только вместо мастер имя своей базы поставь
SELECT  SERVERPROPERTY('SqlCharSetName')  = cp1251

SELECT DATABASEPROPERTYEX('myDB!!!','SqlCharSetName')  = NULL
SELECT DATABASEPROPERTYEX('myDB!!!','Collation')  = NULL
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Не знаю, что значит Collation и SqlCharSetName , но меня смутило:
SELECT  SERVERPROPERTY('SqlCharSetName')  = cp1251
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
weakSB
Не знаю, что значит Collation и SqlCharSetName , но меня смутило:
SELECT  SERVERPROPERTY('SqlCharSetName')  = cp1251
Ты скрипт загружаешь на линуксе? Там где mssql развернута?
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
Можешь выполнить скрипт на виндовой машине с обращением к mssql  на linux?
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Sergey M
Ты скрипт загружаешь на линуксе? Там где mssql развернута?
да.
к сожалению, нет, из винды нет возможности ничего сделать  )
источник

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
iconv -f iso-8859-1 -t utf-8 -o insert_new.sql insert.sql  

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

SM

Sergey M in SqlCom.ru - Стиль жизни SQL
Попробуй подставить windows-1251 вместо iso
источник

w

weakSB in SqlCom.ru - Стиль жизни SQL
Sergey M
iconv -f iso-8859-1 -t utf-8 -o insert_new.sql insert.sql  

У тебя если кодировка файла другая то ничего не пройдёт
Не много не понял
Iso это исходная
источник