Форум: "Базы";
Текущий архив: 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.039 c