Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在插入过程中,从数据库字符集到国家字符集的文本数是多少?@AlexPoole诚恳地说,我不明白你的问题……每个语句插入多少行?如果INSERT ALL比UNION ALL慢,您可能会遇到Oracle解析问题,如我在回答中所述。将INSERT ALL分解成更_Oracle_Unicode_Bulkinsert - Fatal编程技术网

在插入过程中,从数据库字符集到国家字符集的文本数是多少?@AlexPoole诚恳地说,我不明白你的问题……每个语句插入多少行?如果INSERT ALL比UNION ALL慢,您可能会遇到Oracle解析问题,如我在回答中所述。将INSERT ALL分解成更

在插入过程中,从数据库字符集到国家字符集的文本数是多少?@AlexPoole诚恳地说,我不明白你的问题……每个语句插入多少行?如果INSERT ALL比UNION ALL慢,您可能会遇到Oracle解析问题,如我在回答中所述。将INSERT ALL分解成更,oracle,unicode,bulkinsert,Oracle,Unicode,Bulkinsert,在插入过程中,从数据库字符集到国家字符集的文本数是多少?@AlexPoole诚恳地说,我不明白你的问题……每个语句插入多少行?如果INSERT ALL比UNION ALL慢,您可能会遇到Oracle解析问题,如我在回答中所述。将INSERT ALL分解成更小的块可能就足够了,以避免庞大SQL语句的长解析时间。@JonHeller目前,我将每查询行常量设置为100。有了这个值,我可以在21秒内插入81.000行(x23列)。在字符串文本上的任意位置应用N是否会降低性能?“在字符串文本上的任意位置应


在插入过程中,从数据库字符集到国家字符集的文本数是多少?@AlexPoole诚恳地说,我不明白你的问题……每个语句插入多少行?如果
INSERT ALL
UNION ALL
慢,您可能会遇到Oracle解析问题,如我在回答中所述。将
INSERT ALL
分解成更小的块可能就足够了,以避免庞大SQL语句的长解析时间。@JonHeller目前,我将每查询行常量设置为
100
。有了这个值,我可以在21秒内插入81.000行(x23列)。在字符串文本上的任意位置应用N是否会降低性能?“在字符串文本上的任意位置应用N是否会降低性能?”否,因为插入到nchar列中的任何字符值都已隐式或显式转换为nchar,所以无法执行该操作。@Mikhailoven,谢谢。因此,对于
N
,我只是显式地定义了一个隐式发生的过程?“我假设您得到一个错误“ORA-12704:字符集不匹配”,因为引号中的数据被认为是字符,但字段是nchar“不,我得到这个错误是因为我将非unicode和unicode文本与
UNION ALL
混合。“但是,如果您有一些像”\00E0“这样编码的值,它们将不会被解码,并将被视为原样。”包含特殊字符的字符串由我们的层自动用
UNISTR
包装,其他的则不会。这就是为什么会出现混合,这就是为什么我需要N来表示其他字符串。”顺便说一下,为什么不把所有的值都作为
N'my string加上特殊字符,比如a'
“那么你是说使用
UNISTR('\00E0')
N'a'
之间没有区别?”使用UNISTR('\00E0')和N'a''之间没有区别,“至少当我使用JDBC或SQL Developer插入时,我找不到区别。”不,我得到错误是因为我将非unicode和unicode文本与UNION ALL混合。“尝试创建一个包含char和nchar列的测试表,并尝试使用N char的N'string'和char的'string'进行insert-这将起作用。”SQL语句的最大允许长度是固定的,因此它无法处理10000个insert“,根本不是真的。Oracle没有固定的长度限制,请参阅。顺便说一句,我们的层会自动按预定义的大小拆分查询,因此我们不需要担心这些事情。“您试图实现的是大规模插入。使用Oracle驱动程序的JDBC批处理模式”我知道有很多方法可以批量插入,即从格式化文本文件开始,但事实并非如此。我们的层还为SqlServer和Postgres组合查询。顺便说一句,没有人提到Java,我们使用.net。“考虑禁用触发器和外键约束”我们的配置中没有触发器。无论如何,请注意,触发器通常是您不能缺少的,特别是在它们进行数据修改时。“考虑禁用触发器和外键约束”外键约束可能会影响数据插入率,但如果禁用它们,您需要稍后重新启用它们。。。重新启用(和检查)的时间与插入期间节省的时间相当。“也考虑回滚段大小。”没有人提到事务。不管怎么说,它们都是用来使用的。在某些应用程序中,提交@1000记录阈值是荒谬的。
SQL> create table test (val nvarchar2(20));

Table TEST created.

SQL> insert into test select n'test' from dual;

1 row inserted.

SQL> insert into test select 'test' from dual;

1 row inserted.

SQL> select dump(val) from test;
DUMP(VAL)                                                                      
--------------------------------------------------------------------------------
Typ=1 Len=8: 0,116,0,101,0,115,0,116                                            
Typ=1 Len=8: 0,116,0,101,0,115,0,116  
   insert into  select N'my string with special chars like \00E0', 
    UNISTR('my string with special chars like \00E0') from dual ....