Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

Как (чем) ввести данные в unicode в таблицу Oracle ?   Найти похожие ветки 

 
Игорь Шевченко ©   (2005-06-01 15:38) [0]

Имеется база данных Oracle, с типом полей NVARCHAR2(x), хотелось бы заполнить ее данными, в идеальном случае значение поля в каждой записи на своем языке (русский, английский, польский, китайский и т.д.).

Столкнулся с проблемой - SQL*Plus юникода не понимает, пытается перевести в ANSI, бесплатные компоненты для доступа к Oracle из скачанных на torry.net тоже не упоминают в своих readme поддержку unicode.

Кто-нибудь может посоветовать какое-нибудь бесплатное средство или программное решение ?

Заранее благодарен.


 
ANB ©   (2005-06-01 15:42) [1]

Ща я в одаке и доа покопаюсь . . . Если найду возможность могу выслать под D7. Все с исходниками.


 
Игорь Шевченко ©   (2005-06-01 15:50) [2]

ANB ©   (01.06.05 15:42) [1]

Лучше бы под D5 или без русского. Но насколько я знаю, ODAC и DOA платные ?

Очень устроил бы вариант - скрипт на создание таблицы + EXEшник, заполняющий ее из полей ввода. Данные в unicode я беру со страниц сайтов разных стран, очень удобно.


 
sniknik ©   (2005-06-01 15:52) [3]

> или программное решение ?
Tnt компаненты + ADO.
с Oracle не знаю а MSSQL/Access принимают юникод через них на "ура". все бесплатно.


 
Игорь Шевченко ©   (2005-06-01 15:52) [4]

PS: Может, какое из стандартных средств самого Oracle есть ?


 
Игорь Шевченко ©   (2005-06-01 15:54) [5]

sniknik ©   (01.06.05 15:52) [3]

То, что Tnt-компоненты - это понятно.
А про ADO не подумал, спасибо за пинок.


 
Anatoly Podgoretsky ©   (2005-06-01 15:55) [6]

Мало информации даешь, сам Юникод в Дельфи поддержан, а вот VCL полное отсутствие. Посмотри на TntControls (только для НТ платформы).


 
Reindeer Moss Eater ©   (2005-06-01 16:02) [7]

SQL*Loader поддерживает по крайней мере NCLOB.


 
ANB ©   (2005-06-01 16:17) [8]


> Игорь Шевченко ©   (01.06.05 15:50) [2]
- покопался. Ни одак ни доа напрямую юникод не жрут. Точнее, приезжает ошибка "ORA-12704 character set mismatch". Почитал ошибку (описание под 9, сама оракла 8), пишут, что нужно явно преобразовывать. Пока не нарыл как, но если юзать функции ораклы, то можно достучаться откуда хочешь.
Одак и доа я не покупал, ставяться без ключа. Отправлять или не надо ?


 
Reindeer Moss Eater ©   (2005-06-01 16:32) [9]

ODAC прекрасно справляется с NVARCHAR


 
ANB ©   (2005-06-01 16:58) [10]


> Reindeer Moss Eater ©   (01.06.05 16:32) [9]
- как его заставить есть nvarchar2 ?


 
Reindeer Moss Eater ©   (2005-06-01 17:07) [11]

А как ты заставляешь его "есть" ну скажем Double или Integer или Varchar2?


 
ANB ©   (2005-06-01 17:32) [12]

Засовываю в параметр нужное значение и не мучаюсь


 
ANB ©   (2005-06-01 17:34) [13]

Хм, нашел qrSQL.ParamByName("F1").AsWideString, запихал туда WideString строку. Ошибка та же.


 
Reindeer Moss Eater ©   (2005-06-01 19:05) [14]

Вот и я засовываю в поле нужное мне значение и не мучаюсь.


 
Shaman_Naydak   (2005-06-01 19:58) [15]

ODAC поддерживает WideString с версии 4.50, если не ошибаюсь


 
Fay ©   (2005-06-01 20:21) [16]

Игорь Шевченко ©   (01.06.05 15:38)
М.б. тебе DOA дать? 8)


 
Игорь Шевченко ©   (2005-06-01 22:00) [17]

Завтра буду ставить на чистую систему клиента Oracle, Delphi и прочее. Сейчас у меня два клиента в одной системе, сдается мне, что путаница в них происходит. С ADO и TntControls получается любопытная ситуация, в design-time я вижу содержимое таблицы в Unicode (связка ADOConnection+ADOTable+DataSource+TntDBGrid), а при запуске приложения кодировка меняется непонятным образом и того, что я видел в design-time, я увидеть никак не могу. DLL-и клиента Oracle подгружаются вперемешку, OLE DB-Provider из 8-го клиента, oci из 9-го, а в среде несколько другой состав DLL. Мне лень искать причину, проще произвести эксперимент на чистой системе.

ЗЫ: Платных компонентов я не хочу.

ЗЗЫ: ADO я практически не знаю, просьба ногами сильно не пинать :)


 
evvcom ©   (2005-06-02 08:59) [18]


> Одак и доа я не покупал, ставяться без ключа

DOA не юзал, а насчет ODAC... Да, ставится без ключа. Только попробуй сделать так: скомпиль exe, выгрузи Delphi, запусти скомпиленный exe. О результатах сообщи.


 
ANB ©   (2005-06-02 09:08) [19]

Запускается на всех компах в конторе. Делфа стоит далеко не у всех. Вот DOA без ключа не работает. Но у меня ключ есть :)))


 
ANB ©   (2005-06-02 09:08) [20]


> Reindeer Moss Eater ©   (01.06.05 19:05) [14]
Посмотри мой пост 13 - не работает такой способ. У меня оракл 8, одак - 5.


 
ANB ©   (2005-06-02 09:16) [21]


> Игорь Шевченко ©   (01.06.05 22:00) [17]
- тебе слать или не надо ?
Есть :
- одак 5.10 под делфи с 5 по 8 и билдер 5 и 6
- доа 4.04 под делфи 7
все с исходниками


 
evvcom ©   (2005-06-02 09:25) [22]


> Запускается на всех компах в конторе.

Значит dcu уже ломаная :)


 
ANB ©   (2005-06-02 09:27) [23]


> Значит dcu уже ломаная :)
- обижаешь, откуда у меня dcu ломаная то, если я все сам компилил из исходников.


 
Игорь Шевченко ©   (2005-06-02 09:57) [24]

ANB ©   (02.06.05 09:16) [21]


> - тебе слать или не надо ?


Спасибо.
Я все-таки сначала попробую легальными способами, на чистой системе через ADO.
Если не получится, тогда попрошу, ок ?


 
ANB ©   (2005-06-02 10:23) [25]


> на чистой системе через ADO
- это легальный способ ? У меня казанские кореша вообще на прямую работу с OCI перешли, намного удобнее, грят.


 
Игорь Шевченко ©   (2005-06-02 10:41) [26]

ANB ©   (02.06.05 10:23) [25]


> - это легальный способ ?


Для этого ничего дополнительного покупать не требуется :)


> У меня казанские кореша вообще на прямую работу с OCI перешли,
> намного удобнее, грят.


Вообще-то у нас есть самостоятельно написанный неплохой набор компонент для работы через oci, но, на данном этапе, только с ANSI. Разумеется, он будет доделываться для поддержки unicode, собственно, мое желание заполнить таблицу строками разных языков служит частично и этой цели.


 
evvcom ©   (2005-06-02 11:53) [27]


> - обижаешь, откуда у меня dcu ломаная то, если я все сам
> компилил из исходников.

У тебя есть исходники ODAC?


 
ANB ©   (2005-06-02 12:30) [28]

Ну дык, а как его еще ставить ? Можа правда не все, но он перебилдивается. Я на вскидку проверил, вроде ко всем дцу есть пасники и дфмки.


 
evvcom ©   (2005-06-02 14:40) [29]

2ANB: У меня ODAC Net Edition 4.10 for Delphi7 только сейчас обратил внимание, что Net Edition. Инсталляха без сырцов. Если не трудно намыль мне исходники. А версия у тебя какая?


 
Игорь Шевченко ©   (2005-06-02 14:58) [30]

Всем спасибо, особенно sniknik ©   (01.06.05 15:52) [3]

Все получилось.

unit main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Db, ADODB, StdCtrls, Mask, DBCtrls, TntDbCtrls, Grids, DBGrids,
 TntDBGrids, ExtCtrls, ComCtrls, TntComCtrls;

type
 TForm1 = class(TForm)
   ADOConnection1: TADOConnection;
   ADOTable1: TADOTable;
   DataSource1: TDataSource;
   TntDBGrid1: TTntDBGrid;
   TntDBEdit1: TTntDBEdit;
   TntDBEdit2: TTntDBEdit;
   DBNavigator1: TDBNavigator;
   ADOTable1W: TWideStringField;
   ADOTable1A: TWideStringField;
   ADOTable1LONGDATAW: TWideStringField;
   ADOTable1LONGDATAA: TWideStringField;
   TntDBRichEdit1: TTntDBRichEdit;
   TntDBRichEdit2: TTntDBRichEdit;
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

end.


object Form1: TForm1
 Left = 192
 Top = 107
 Width = 544
 Height = 454
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object TntDBGrid1: TTntDBGrid
   Left = 12
   Top = 184
   Width = 517
   Height = 240
   Anchors = [akLeft, akTop, akRight, akBottom]
   DataSource = DataSource1
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = "Tahoma"
   Font.Style = []
   ParentFont = False
   TabOrder = 0
   TitleFont.Charset = DEFAULT_CHARSET
   TitleFont.Color = clWindowText
   TitleFont.Height = -11
   TitleFont.Name = "MS Sans Serif"
   TitleFont.Style = []
 end
 object TntDBEdit1: TTntDBEdit
   Left = 12
   Top = 40
   Width = 517
   Height = 21
   Anchors = [akLeft, akTop, akRight]
   DataField = "W"
   DataSource = DataSource1
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = "Tahoma"
   Font.Style = []
   ParentFont = False
   TabOrder = 1
 end
 object TntDBEdit2: TTntDBEdit
   Left = 12
   Top = 72
   Width = 517
   Height = 21
   Anchors = [akLeft, akTop, akRight]
   DataField = "A"
   DataSource = DataSource1
   TabOrder = 2
 end
 object DBNavigator1: TDBNavigator
   Left = 12
   Top = 8
   Width = 240
   Height = 25
   DataSource = DataSource1
   TabOrder = 3
 end
 object TntDBRichEdit1: TTntDBRichEdit
   Left = 12
   Top = 104
   Width = 229
   Height = 69
   DataField = "LONGDATAW"
   DataSource = DataSource1
   TabOrder = 4
 end
 object TntDBRichEdit2: TTntDBRichEdit
   Left = 252
   Top = 104
   Width = 277
   Height = 69
   DataField = "LONGDATAA"
   DataSource = DataSource1
   TabOrder = 5
 end
 object ADOConnection1: TADOConnection
   Connected = True
   ConnectionString =
     "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=H" +
     "S_SIW;Data Source=orc7;Extended Properties="""
   Provider = "OraOLEDB.Oracle.1"
   Left = 16
   Top = 16
 end
 object ADOTable1: TADOTable
   Active = True
   Connection = ADOConnection1
   CursorType = ctStatic
   TableName = "UNICODE_DATA"
   Left = 16
   Top = 52
   object ADOTable1W: TWideStringField
     FieldName = "W"
     Size = 40
   end
   object ADOTable1A: TWideStringField
     FieldName = "A"
     Size = 40
   end
   object ADOTable1LONGDATAW: TWideStringField
     DisplayWidth = 20
     FieldName = "LONGDATAW"
     Size = 2000
   end
   object ADOTable1LONGDATAA: TWideStringField
     DisplayWidth = 20
     FieldName = "LONGDATAA"
     Size = 4000
   end
 end
 object DataSource1: TDataSource
   DataSet = ADOTable1
   Left = 16
   Top = 88
 end
end


Табличка тоже простая:

create table unicode_data (
W NVARCHAR2(40) not null primary key,
A VARCHAR2(40) not null,
LONGDATAW NVARCHAR2(2000),
LONGDATAA VARCHAR2(4000))
/



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.055 c
3-1118048054
Леонид
2005-06-06 12:54
2005.07.18
Сложный SQL запрос


6-1113029405
Laymer
2005-04-09 10:50
2005.07.18
Монитор сетевых ресурсов


9-1112638214
JockerColl
2005-04-04 22:10
2005.07.18
Физика "прыжка"


14-1119867598
stone
2005-06-27 14:19
2005.07.18
Начальник тупой?


1-1119943500
Asker
2005-06-28 11:25
2005.07.18
скачать файл из инета ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский