Sequence in Bulk Insert
Hi All
Just one doubt,
whether sequence can be used in Bulk insert query ?
Have you tried creating a test case? See below:
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL > CREATE table test_tab(id NUMBER, ename VARCHAR2(10));
Table created.
SQL > CREATE SEQUENCE test_seq;
Sequence created.
SQL > DECLARE
2 TYPE e_list is TABLE OF test_tab.ename%TYPE INDEX BY PLS_INTEGER;
3
4 emps e_list;
5 BEGIN
6 emps(1) := 'Jeff';
7 emps(2) := 'Jane';
8 emps(3) := 'Joe';
9
10 FORALL i IN emps.FIRST .. emps.LAST
11 INSERT INTO test_tab(id, ename) VALUES(test_seq.NEXTVAL,emps(i));
12
13 COMMIT;
14 END;
15 /
PL/SQL procedure successfully completed.
SQL > SELECT * FROM test_tab;
ID ENAME
2 Jeff
3 Jane
4 Joe
SQL > DROP SEQUENCE test_seq;
Sequence dropped.
SQL > DROP TABLE test_tab PURGE;
Table dropped.
Similar Messages
-
Bulk inserts on Solaris slow as compared to windows
Hi Experts,
Looking for tips in troubleshooting 'Bulk inserts on Solaris'. I have observed the same bulk inserts are quite fast on Windows as compared to Solaris. Is there known issues on Solaris?
This is the statement:
I have 'merge...insert...' query which is in execution since long time more than 12 hours now:
merge into A DEST using (select * from B SRC) SRC on (SRC.some_ID= DEST.some_ID) when matched then update ...when not matched then insert (...) values (...)Table A has 600K rows with unique identifier some_ID column, Table B has 500K rows with same some_id column, the 'merge...insert' checks if the some_ID exists, if yes then update query gets fired, when not matched then insert query gets fired. In either case it takes long time to execute.
Environment:
The version of the database is 10g Standard 10.2.0.3.0 - 64bit Production
OS: Solaris 10, SPARC-Enterprise-T5120
These are the parameters relevant to the optimizer:
SQL>
SQL> show parameter sga_target
NAME TYPE VALUE
sga_target big integer 4G
SQL>
SQL> show parameter sga_target
NAME TYPE VALUE
sga_target big integer 4G
SQL>
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 10.2.0.3
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
SQL>
SQL> show parameter db_file_multi
NAME YPE VALUE
db_file_multiblock_read_count integer 16
SQL>
SQL> show parameter db_block_size
NAME TYPE VALUE
db_block_size integer 8192
SQL>
SQL> show parameter cursor_sharing
NAME TYPE VALUE
cursor_sharing string EXACT
SQL>
SQL> column sname format a20
SQL> column pname format a20
SQL> column pval2 format a20
SQL>
SQL> select sname, pname, pval1, pval2 from sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 07-12-2005 07:13
SYSSTATS_INFO DSTOP 07-12-2005 07:13
SYSSTATS_INFO FLAGS 1
SYSSTATS_MAIN CPUSPEEDNW 452.727273
SYSSTATS_MAIN IOSEEKTIM 10
SYSSTATS_MAIN IOTFRSPEED 4096
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.
Following is the error messages being pushed into oracle alert log file:
Thu Dec 10 01:41:13 2009
Thread 1 advanced to log sequence 1991
Current log# 1 seq# 1991 mem# 0: /oracle/oradata/orainstance/redo01.log
Thu Dec 10 04:51:01 2009
Thread 1 advanced to log sequence 1992
Current log# 2 seq# 1992 mem# 0: /oracle/oradata/orainstance/redo02.logPlease provide some tips to troubleshoot the actual issue. Any pointers on db_block_size,SGA,PGA which are the reasons for this failure?
Regards,
neuronSID, SEQ#, EVENT, WAIT_CLASS_ID, WAIT_CLASS#, WAIT_TIME, SECONDS_IN_WAIT, STATE
125 24235 'db file sequential read' 1740759767 8 -1 *58608 * 'WAITED SHORT TIME'Regarding the disk, I am not sure what needs to be checked, however from output of iostat it does not seem to be busy, check last three row's and %b column is negligible:
tty cpu
tin tout us sy wt id
0 320 3 0 0 97
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 ramdisk1
0.0 2.5 0.0 18.0 0.0 0.0 0.0 8.3 0 1 c1t0d0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c1t1d0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c0t0d0 -
Blob truncated with DbFactory and Bulk insert
Hi,
My platform is a Microsoft Windows Server 2003 R2 Server 5.2 Service Pack 2 (64-bit) with an Oracle Database 11g 11.1.0.6.0.
I use the client Oracle 11g ODAC 11.1.0.7.20.
Some strange behavior appends when used DbFactory and bulk command with Blob column and parameter with a size larger than 65536bytes. Let me explain.
First i create a dummy table in my schema :
create table dummy (a number, b blob)To use bulk insert we can use the code A with oracle object (succes to execute) :
byte[] b1 = new byte[65530];
byte[] b2 = new byte[65540];
Oracle.DataAccess.Client.OracleConnection conn = new Oracle.DataAccess.Client.OracleConnection("User Id=login;Password=pws;Data Source=orcl;");
OracleCommand cmd = new OracleCommand("insert into dummy values (:p1,:p2)", conn);
cmd.ArrayBindCount = 2;
OracleParameter p1 = new OracleParameter("p1", OracleDbType.Int32);
p1.Direction = ParameterDirection.Input;
p1.Value = new int[] { 1, 2 };
cmd.Parameters.Add(p1);
OracleParameter p2 = new OracleParameter("p2", OracleDbType.Blob);
p2.Direction = ParameterDirection.Input;
p2.Value = new byte[][] { b1, b2 };
cmd.Parameters.Add(p2);
conn.Open(); cmd.ExecuteNonQuery(); conn.Close();We can write the same thing with an abstract level when used the DbProviderFactories (code B) :
var factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = "User Id=login;Password=pws;Data Source=orcl;";
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "insert into dummy values (:p1,:p2)";
((OracleCommand)cmd).ArrayBindCount = 2;
DbParameter param = cmd.CreateParameter();
param.ParameterName = "p1";
param.DbType = DbType.Int32;
param.Value = new int[] { 3, 4 };
cmd.Parameters.Add(param);
DbParameter param2 = cmd.CreateParameter();
param2.ParameterName = "p2";
param2.DbType = DbType.Binary;
param2.Value = new byte[][] { b1, b2 };
cmd.Parameters.Add(param2);
conn.Open(); cmd.ExecuteNonQuery(); conn.Close();But this second code doesn't work, the second array of byte is truncated to 4byte. It seems to be an int16 overtaking.
When used a DbTYpe.Binary, oracle use an OracleDbType.Raw for mapping and not an OracleDbType.Blob, so the problem seems to be with raw type, BUT if we use the same code without bulk insert, it's worked !!! The problem is somewhere else...
Why used an DbConnection ? To be able to switch easy to an another database type.
So why used "((OracleCommand)cmd).ArrayBindCount" ? To be able to used specific functionality of each database.
I can fix the issue when casting DbParameter as OracleParameter and fix the OracleDbType to Blob, but why second code does not working with bulk and working with simple query ?BCP and BULK INSERT does not work the way you expect them do. What they do is that they consume fields in a round-robin fashion. That is, they first looks for data for the first field, then for the second field and so on.
So in your case, they will first read one byte, then 20 bytes etc until they have read the two bytes for field 122. At this point they will consume bytes until they have found a sequence of carriage return and line feed.
You say that some records in the file are incomplete. Say that there are only 60 fields in this file. Field 61 is four bytes. BCP and BULK INSERT will now read data for field 61 as CR+LF+the first two bytes in the next row. CR+LF has no special meaning,
but they are just data at this point.
You will have to write a program to parse the file, or use SSIS. But BCP and BULK INSERT are not your friends in this case.
Erland Sommarskog, SQL Server MVP, [email protected] -
Hello,
i'm trying to bulk insert data into planning and i get an error. As i can understand it seems related to some bad settings regarding decimal separator. I'm from italy where default decimal separator is ",". As far as i can check everything is set on english including Oracle Client (... sqlldr).
As you can see in datafile.log i get oracle ORA-01722 error.
Any ideas?
Thank you in advance,
Daniele
S.O: windows2008
FDM Version: 11.1.2.1
REPOSITORY: Oracle 11.2.0.1.0 - 64bit
Here are log files:
admin.log:
** Begin FDM Runtime Error Log Entry [2011-09-07 16:50:18] **
ERROR:
Code............................................. 4003
Description...................................... Oracle (SQL-Loader) data load failed, please see processing log for details!
Procedure........................................ clsImpProcessMgr.fLoadAndProcessFile
Component........................................ upsWObjectsDM
Version.......................................... 1112
Thread........................................... 4040
IDENTIFICATION:
User............................................. admin
Computer Name.................................... IPEREPMA00
App Name......................................... FDMAuchan
Client App....................................... WebClient
CONNECTION:
Provider......................................... ORAOLEDB.ORACLE
Data Server......................................
Database Name.................................... HYPTEST
Trusted Connect.................................. False
Connect Status.. Connection Open
GLOBALS:
Location......................................... LOADACTSAP
Location ID...................................... 750
Location Seg..................................... 4
Category......................................... SAP
Category ID...................................... 13
Period........................................... Jan - 2011
Period ID........................................ 1/31/2011
POV Local........................................ False
Language......................................... 1033
User Level....................................... 1
All Partitions................................... True
Is Auditor....................................... False
datafile.log
+2011-09-07 16:50:16+
User ID........... admin
Location.......... LOADACTSAP
Source File....... D:\Oracle\Middleware\EPMSystem11R1\products\FinancialDataQuality\SharedComponents\APPS\FDMAuchan\Inbox\LOADACTSAP\SAP_1101_Prova.txt
Processing Codes:
BLANK............. Line is blank or empty.
ESD............... Excluded String Detected, SKIP Field value was found.
NN................ Non-Numeric, Amount field contains non numeric characters.
RFM............... Required Field Missing.
TC................ Type Conversion, Amount field could be converted to a number.
ZP................ Zero Suppress, Amount field contains a 0 value and zero suppress is ON.
Create Output File Start: [2011-09-07 16:50:16]
+[Blank] - +
Excluded Record Count..............0
Blank Record Count.................1
Total Records Bypassed.............1
Valid Records......................477
Total Records Processed............478
Begin Oracle (SQL-Loader) Process (477): [2011-09-07 16:50:16]
Oracle (SQL-Loader) Log File Contents:
SQL*Loader: Release 11.2.0.1.0 - Production on Mer Set 7 16:50:16 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Control File: C:\Users\INSTAL~1\AppData\Local\Temp\tWadmin154840402517.ctl
Character Set UTF16 specified for all input.
Using character length semantics.
First primary datafile C:\Users\INSTAL~1\AppData\Local\Temp\tWadmin154840402517.tmp has a
little endian byte order mark in it.
Data File: C:\Users\INSTAL~1\AppData\Local\Temp\tWadmin154840402517.tmp
Bad File: C:\Users\INSTAL~1\AppData\Local\Temp\tWadmin154840402517.bad
Discard File: none specified
+(Allow all discards)+
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Continuation: none specified
Path used: Direct
Load is UNRECOVERABLE; invalidation redo is produced.
Table TWADMIN154840402517, loaded from every logical record.
Insert option in effect for this table: APPEND
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
DATAKEY SEQUENCE (1, 1)
PARTITIONKEY FIRST * CHARACTER
Terminator string : '~|'
CATKEY NEXT * CHARACTER
Terminator string : '~|'
PERIODKEY NEXT * DATE YYYYMMDD
Terminator string : '~|'
DATAVIEW NEXT * CHARACTER
Terminator string : '~|'
ACCOUNT NEXT * CHARACTER
Terminator string : '~|'
ENTITY NEXT * CHARACTER
Terminator string : '~|'
ICP NEXT * CHARACTER
Terminator string : '~|'
UD1 NEXT * CHARACTER
Terminator string : '~|'
UD2 NEXT * CHARACTER
Terminator string : '~|'
UD3 NEXT * CHARACTER
Terminator string : '~|'
UD4 NEXT * CHARACTER
Terminator string : '~|'
UD5 NEXT * CHARACTER
Terminator string : '~|'
UD6 NEXT * CHARACTER
Terminator string : '~|'
UD7 NEXT * CHARACTER
Terminator string : '~|'
UD8 NEXT * CHARACTER
Terminator string : '~|'
UD9 NEXT * CHARACTER
Terminator string : '~|'
UD10 NEXT * CHARACTER
Terminator string : '~|'
UD11 NEXT * CHARACTER
Terminator string : '~|'
UD12 NEXT * CHARACTER
Terminator string : '~|'
UD13 NEXT * CHARACTER
Terminator string : '~|'
UD14 NEXT * CHARACTER
Terminator string : '~|'
UD15 NEXT * CHARACTER
Terminator string : '~|'
UD16 NEXT * CHARACTER
Terminator string : '~|'
UD17 NEXT * CHARACTER
Terminator string : '~|'
UD18 NEXT * CHARACTER
Terminator string : '~|'
UD19 NEXT * CHARACTER
Terminator string : '~|'
UD20 NEXT * CHARACTER
Terminator string : '~|'
DESC1 NEXT * CHARACTER
Terminator string : '~|'
DESC2 NEXT * CHARACTER
Terminator string : '~|'
ATTR1 NEXT * CHARACTER
Terminator string : '~|'
ATTR2 NEXT * CHARACTER
Terminator string : '~|'
ATTR3 NEXT * CHARACTER
Terminator string : '~|'
ATTR4 NEXT * CHARACTER
Terminator string : '~|'
ATTR5 NEXT * CHARACTER
Terminator string : '~|'
ATTR6 NEXT * CHARACTER
Terminator string : '~|'
ATTR7 NEXT * CHARACTER
Terminator string : '~|'
ATTR8 NEXT * CHARACTER
Terminator string : '~|'
ATTR9 NEXT * CHARACTER
Terminator string : '~|'
ATTR10 NEXT * CHARACTER
Terminator string : '~|'
ATTR11 NEXT * CHARACTER
Terminator string : '~|'
ATTR12 NEXT * CHARACTER
Terminator string : '~|'
ATTR13 NEXT * CHARACTER
Terminator string : '~|'
ATTR14 NEXT * CHARACTER
Terminator string : '~|'
MEMOKEY NEXT * CHARACTER
Terminator string : '~|'
AMOUNT NEXT * CHARACTER
Terminator string : '~|'
CALCACCTTYPE CONSTANT
Value is '9'
CHANGESIGN CONSTANT
Value is '0'
AMOUNTX CONSTANT
Value is '0'
ACCOUNTR CONSTANT
Value is '0'
ACCOUNTF CONSTANT
Value is '0'
ENTITYR CONSTANT
Value is '0'
ENTITYF CONSTANT
Value is '0'
ICPR CONSTANT
Value is '0'
ICPF CONSTANT
Value is '0'
UD1R CONSTANT
Value is '0'
UD1F CONSTANT
Value is '0'
UD2R CONSTANT
Value is '0'
UD2F CONSTANT
Value is '0'
UD3R CONSTANT
Value is '0'
UD3F CONSTANT
Value is '0'
UD4R CONSTANT
Value is '0'
UD4F CONSTANT
Value is '0'
UD5R CONSTANT
Value is '0'
UD5F CONSTANT
Value is '0'
UD6R CONSTANT
Value is '0'
UD6F CONSTANT
Value is '0'
UD7R CONSTANT
Value is '0'
UD7F CONSTANT
Value is '0'
UD8R CONSTANT
Value is '0'
UD8F CONSTANT
Value is '0'
UD9R CONSTANT
Value is '0'
UD9F CONSTANT
Value is '0'
UD10R CONSTANT
Value is '0'
UD10F CONSTANT
Value is '0'
UD11R CONSTANT
Value is '0'
UD11F CONSTANT
Value is '0'
UD12R CONSTANT
Value is '0'
UD12F CONSTANT
Value is '0'
UD13R CONSTANT
Value is '0'
UD13F CONSTANT
Value is '0'
UD14R CONSTANT
Value is '0'
UD14F CONSTANT
Value is '0'
UD15R CONSTANT
Value is '0'
UD15F CONSTANT
Value is '0'
UD16R CONSTANT
Value is '0'
UD16F CONSTANT
Value is '0'
UD17R CONSTANT
Value is '0'
UD17F CONSTANT
Value is '0'
UD18R CONSTANT
Value is '0'
UD18F CONSTANT
Value is '0'
UD19R CONSTANT
Value is '0'
UD19F CONSTANT
Value is '0'
UD20R CONSTANT
Value is '0'
UD20F CONSTANT
Value is '0'
ARCHIVEID CONSTANT
Value is '774'
HASMEMOITEM CONSTANT
Value is '0'
STATICDATAKEY CONSTANT
Value is '0'
Referential Integrity Constraint/Trigger Information:
NULL, UNIQUE, and PRIMARY KEY constraints are unaffected.
Trigger FDMAUCHAN."TWADMIN154840402517_AK" was disabled before the load.
Record 1: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 2: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 3: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 4: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 5: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 6: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 7: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 8: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 9: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 10: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 11: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 12: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 13: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 14: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 15: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 16: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 17: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 18: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 19: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 20: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 21: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 22: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 23: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 24: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 25: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 26: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 27: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 28: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 29: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 30: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 31: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 32: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 33: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 34: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 35: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 36: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 37: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 38: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 39: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 40: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 41: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 42: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 43: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 44: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 45: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 46: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 47: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 48: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 49: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 50: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
Record 51: Rejected - Error on table TWADMIN154840402517, column AMOUNT.
ORA-01722: numero non valido
FDMAUCHAN."TWADMIN154840402517_AK" was re-enabled.
MAXIMUM ERROR COUNT EXCEEDED - Above statistics reflect partial run.
Table TWADMIN154840402517:
+0 Rows successfully loaded.+
+51 Rows not loaded due to data errors.+
+0 Rows not loaded because all WHEN clauses were failed.+
+0 Rows not loaded because all fields were null.+
Bind array size not used in direct path.
Column array rows : 3000
Stream buffer bytes: 256000
Read buffer bytes:18576000
Total logical records skipped: 0
Total logical records rejected: 51
Total logical records discarded: 0
Total stream buffers loaded by SQL*Loader main thread: 1
Total stream buffers loaded by SQL*Loader load thread: 0
Run began on Mer Set 07 16:50:16 2011
Run ended on Mer Set 07 16:50:17 2011
Elapsed time was: 00:00:00.56
CPU time was: 00:00:00.24
Oracle (SQL-Loader) Bad File Contents:
+750~|13~|20110131~|YTD~|701306~|1854~|~|153~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711200~|0355~|~|190~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711260~|1822~|~|119~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711260~|1858~|~|142~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711261~|3601~|~|160~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711302~|5308~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711383~|1748~|~|010~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711383~|1857~|~|010~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711458~|1608~|~|191~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|0355~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|0392~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|1565~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|1784~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|1823~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|1848~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711468~|1853~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711605~|2644~|~|555~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711606~|3601~|~|555~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711641~|2389~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|711655~|2649~|~|116~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721330~|1161~|~|155~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721330~|1852~|~|010~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721330~|3539~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721330~|5158~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721340~|3473~|~|190~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721341~|4263~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|721341~|5617~|~|999~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730001~|3898~|~|010~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730003~|0355~|~|192~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730003~|0392~|~|140~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730003~|1565~|~|142~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730003~|1795~|~|134~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|730003~|1848~|~|126~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|732000~|1823~|~|130~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|734001~|3601~|~|151~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761202~|1748~|~|180~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761205~|5309~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761206~|1608~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761206~|1823~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761210~|1857~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|761210~|7347~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H11468~|1854~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H11468~|2644~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H11468~|5309~|~|181~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H11473~|1784~|~|191~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H11605~|2644~|~|151~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H21330~|1161~|~|123~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H21330~|1161~|~|156~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H21340~|3898~|~|154~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H30000~|1854~|~|177~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+750~|13~|20110131~|YTD~|H30000~|1854~|~|188~|SAP~|DEF_ATT~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|~|0~|100.00+
+[RDMS Bulk Load Error Begin]+
+ Message: (4003) - Oracle (SQL-Loader) data load failed, please see processing log for details!+
+ See Bulk Load File: C:\Users\INSTAL~1\AppData\Local\Temp\tWadmin154840402517.tmp+
+[RDMS Bulk Load Error End]+Hi Daniele,
Can i know the steps to resolve this issue.
I am also facing the same issue. Below is the error message.
[RDMS Bulk Load Error Begin]
Message: (4003) - Oracle (SQL-Loader) data load failed, please see processing log for details!
See Bulk Load File: C:\temp\tWthinad824889961810.tmp
[RDMS Bulk Load Error End]
I am using the Essbase as the Target adaptor. Your reply will be very helpful for me.
Thanks
Dhinesh Kumar T -
I have tried to enable bulk insert on a location. SQL* Loader is installed and appears to work, but I get an error when it tries to load the temp table into my Oracle database. Here's the output from the load file log:
2011-05-12-10:43:09
User ID........... xxx
Location.......... xxx
Source File....... xxx
Processing Codes:
BLANK............. Line is blank or empty.
ESD............... Excluded String Detected, SKIP Field value was found.
NN................ Non-Numeric, Amount field contains non numeric characters.
RFM............... Required Field Missing.
TC................ Type Conversion, Amount field could be converted to a number.
ZP................ Zero Suppress, Amount field contains a 0 value and zero suppress is ON.
Create Output File Start: [2011-05-12-10:43:10]
Begin Oracle (SQL-Loader) Process (42386): [2011-05-12-10:43:17]
Oracle (SQL-Loader) Log File Contents:
SQL*Loader: Release 10.2.0.1.0 - Production on Thu May 12 10:43:17 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Control File: C:\WINDOWS\TEMP\tWrobert358876967263.ctl
Character Set UTF16 specified for all input.
Using character length semantics.
First primary datafile C:\WINDOWS\TEMP\tWrobert358876967263.tmp has a
little endian byte order mark in it.
Data File: C:\WINDOWS\TEMP\tWrobert358876967263.tmp
Bad File: C:\WINDOWS\TEMP\tWrobert358876967263.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Continuation: none specified
Path used: Direct
Load is UNRECOVERABLE; invalidation redo is produced.
Table TWROBERT358876967263, loaded from every logical record.
Insert option in effect for this table: APPEND
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
DATAKEY SEQUENCE (1, 1)
PARTITIONKEY FIRST * CHARACTER
Terminator string : '~|'
CATKEY NEXT * CHARACTER
Terminator string : '~|'
PERIODKEY NEXT * DATE YYYYMMDD
Terminator string : '~|'
DATAVIEW NEXT * CHARACTER
Terminator string : '~|'
ACCOUNT NEXT * CHARACTER
Terminator string : '~|'
ENTITY NEXT * CHARACTER
Terminator string : '~|'
ICP NEXT * CHARACTER
Terminator string : '~|'
UD1 NEXT * CHARACTER
Terminator string : '~|'
UD2 NEXT * CHARACTER
Terminator string : '~|'
UD3 NEXT * CHARACTER
Terminator string : '~|'
UD4 NEXT * CHARACTER
Terminator string : '~|'
UD5 NEXT * CHARACTER
Terminator string : '~|'
UD6 NEXT * CHARACTER
Terminator string : '~|'
UD7 NEXT * CHARACTER
Terminator string : '~|'
UD8 NEXT * CHARACTER
Terminator string : '~|'
UD9 NEXT * CHARACTER
Terminator string : '~|'
UD10 NEXT * CHARACTER
Terminator string : '~|'
UD11 NEXT * CHARACTER
Terminator string : '~|'
UD12 NEXT * CHARACTER
Terminator string : '~|'
UD13 NEXT * CHARACTER
Terminator string : '~|'
UD14 NEXT * CHARACTER
Terminator string : '~|'
UD15 NEXT * CHARACTER
Terminator string : '~|'
UD16 NEXT * CHARACTER
Terminator string : '~|'
UD17 NEXT * CHARACTER
Terminator string : '~|'
UD18 NEXT * CHARACTER
Terminator string : '~|'
UD19 NEXT * CHARACTER
Terminator string : '~|'
UD20 NEXT * CHARACTER
Terminator string : '~|'
DESC1 NEXT * CHARACTER
Terminator string : '~|'
DESC2 NEXT * CHARACTER
Terminator string : '~|'
ATTR1 NEXT * CHARACTER
Terminator string : '~|'
ATTR2 NEXT * CHARACTER
Terminator string : '~|'
ATTR3 NEXT * CHARACTER
Terminator string : '~|'
ATTR4 NEXT * CHARACTER
Terminator string : '~|'
ATTR5 NEXT * CHARACTER
Terminator string : '~|'
ATTR6 NEXT * CHARACTER
Terminator string : '~|'
ATTR7 NEXT * CHARACTER
Terminator string : '~|'
ATTR8 NEXT * CHARACTER
Terminator string : '~|'
ATTR9 NEXT * CHARACTER
Terminator string : '~|'
ATTR10 NEXT * CHARACTER
Terminator string : '~|'
ATTR11 NEXT * CHARACTER
Terminator string : '~|'
ATTR12 NEXT * CHARACTER
Terminator string : '~|'
ATTR13 NEXT * CHARACTER
Terminator string : '~|'
ATTR14 NEXT * CHARACTER
Terminator string : '~|'
MEMOKEY NEXT * CHARACTER
Terminator string : '~|'
AMOUNT NEXT * CHARACTER
Terminator string : '~|'
CALCACCTTYPE CONSTANT
Value is '9'
CHANGESIGN CONSTANT
Value is '0'
AMOUNTX CONSTANT
Value is '0'
ACCOUNTR CONSTANT
Value is '0'
ACCOUNTF CONSTANT
Value is '0'
ENTITYR CONSTANT
Value is '0'
ENTITYF CONSTANT
Value is '0'
ICPR CONSTANT
Value is '0'
ICPF CONSTANT
Value is '0'
UD1R CONSTANT
Value is '0'
UD1F CONSTANT
Value is '0'
UD2R CONSTANT
Value is '0'
UD2F CONSTANT
Value is '0'
UD3R CONSTANT
Value is '0'
UD3F CONSTANT
Value is '0'
UD4R CONSTANT
Value is '0'
UD4F CONSTANT
Value is '0'
UD5R CONSTANT
Value is '0'
UD5F CONSTANT
Value is '0'
UD6R CONSTANT
Value is '0'
UD6F CONSTANT
Value is '0'
UD7R CONSTANT
Value is '0'
UD7F CONSTANT
Value is '0'
UD8R CONSTANT
Value is '0'
UD8F CONSTANT
Value is '0'
UD9R CONSTANT
Value is '0'
UD9F CONSTANT
Value is '0'
UD10R CONSTANT
Value is '0'
UD10F CONSTANT
Value is '0'
UD11R CONSTANT
Value is '0'
UD11F CONSTANT
Value is '0'
UD12R CONSTANT
Value is '0'
UD12F CONSTANT
Value is '0'
UD13R CONSTANT
Value is '0'
UD13F CONSTANT
Value is '0'
UD14R CONSTANT
Value is '0'
UD14F CONSTANT
Value is '0'
UD15R CONSTANT
Value is '0'
UD15F CONSTANT
Value is '0'
UD16R CONSTANT
Value is '0'
UD16F CONSTANT
Value is '0'
UD17R CONSTANT
Value is '0'
UD17F CONSTANT
Value is '0'
UD18R CONSTANT
Value is '0'
UD18F CONSTANT
Value is '0'
UD19R CONSTANT
Value is '0'
UD19F CONSTANT
Value is '0'
UD20R CONSTANT
Value is '0'
UD20F CONSTANT
Value is '0'
ARCHIVEID CONSTANT
Value is '2260'
HASMEMOITEM CONSTANT
Value is '0'
STATICDATAKEY CONSTANT
Value is '0'
Referential Integrity Constraint/Trigger Information:
NULL, UNIQUE, and PRIMARY KEY constraints are unaffected.
Trigger FDMAPP2."TWROBERT358876967263_AK" was disabled before the load.
SQL*Loader-951: Error calling once/load initialization
ORA-00942: table or view does not exist
Processing Complete... [2011-05-12-10:43:18]Hi rjgideon,
At the very end it says "ORA-00942: table or view does not exist". Looks like SQL*Loader is trying to insert data into a table that doesn't exist.
Take a look at the control file: C:\WINDOWS\TEMP\tWrobert358876967263.ctl
You might find a hint in there.
Regards,
Matt -
How can I debug a Bulk Insert error?
I'm loading a bunch of files into SQL server. All work fine, but one keeps erroring out on me. All files should be exactly the same in structure, but they have different dates, and other different financial metrics, but the structure and field
names should be exactly the same. Nevertheless, one keeps konking out, and throwing this error.
Msg 4832, Level 16, State 1, Line 1
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
The ROWTERMINATOR should be CRLF, and when you look at it in Notepad++ that's what it looks like, but it must be something else, because I keep getting errors here. I tried the good old: ROWTERMINATOR='0x0a'
That works on all files, but one, so there's something funky going on here, and I need to see what SQL Server is really doing.
Is there some way to print out a log, or look at a log somewhere?
Thanks!!
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it.The first thing to try is to see if BCP likes the file. BCP and BULK INSERT adhere to the same spec, but they are different implementations, but there are subtle differences.
There is an ERRORFILE option, but it more helps when there is bad data.
You can also use the BATCHSIZE option to see how many records in the file it swallows, before things go bad. FIRSTROW and LASTROW can also help.
All in all, it can be quite tedious find that single row where things are different - and where BULK INSERT loses sync entirely. Keep in mind that it reads fields on by one, and it there is one field terminator to few on a line, it will consume the line
feed at the end of the line as data.
Erland Sommarskog, SQL Server MVP, [email protected] -
ODBC, bulk inserts and dynamic SQL
I am writing an application running on Windows NT 4 and using the oracle ODBC driver (8.01.05.00, that inserts many rows at a time (10000+) into an oracle 8i database.
At present, I am using a stored procedure to insert each row into the database. The stored procedure uses dynamic SQL because I can only determine the table and field names at run time.
Due to the large number of records, it tends to take a while to perform all the inserts. I have tried a number of solutions such as using batches of SQL statements (e.g. "INSERT...;INSERT...;INSERT..."), but the oracle ODBC driver only seems act on the first statement in the batch.
I have also considered using the FOR ALL statement and SQL*Loader utility.
My problem with FOR ALL is that I'm not sure it works on dynamic SQL statements and even if it did, how do I pass an array of statements to the stored procedure.
I ruled out SQL* Loader because I could not find a way to invoke it it from an ODBC statement. Secondly, it requires the spawining of a new process.
What I am really after is something similar the the SQL Server (forgive me!) BULK INSERT statement where you can simply create an input file with all the records you want to insert, and pass it along in an ODBC statement such as "BULK INSERT <filename>".
Any ideas??
nullHi,
I faced this same situation years ago (Oracle 7.2!) and had the following alternatives.
1) Use a 3rd party tool such as Sagent or CA Info pump (very pricey $$$)
2) Use VisualC++ and OCI to hook into the array insert routines (there are examples of these in the Oracle Home).
3) Use SQL*Loader (the best performance, but no real control of what's happening).
I ended up using (2) and used the Rouge Wave dbtools.h++ library to speed up the development.
These days, I would also suggest you take a look at Perl on NT (www.activestate.com) and the DBlib modules at www.perl.org. I believe they will also do bulk loading.
Your problem is that your program is using Oracle ODBC, when you should be using Oracle OCI for best performance.
null -
I am writing an application running on Windows NT 4 and using the oracle ODBC driver (8.01.05.00, that inserts many rows at a time (10000+) into an oracle 8i database.
At present, I am using a stored procedure to insert each row into the database. The stored procedure uses dynamic SQL because I can only determine the table and field names at run time.
Due to the large number of records, it tends to take a while to perform all the inserts. I have tried a number of solutions such as using batches of SQL statements (e.g. "INSERT...;INSERT...;INSERT..."), but the oracle ODBC driver only seems act on the first statement in the batch.
I have also considered using the FOR ALL statement and SQL*Loader utility.
My problem with FOR ALL is that I'm not sure it works on dynamic SQL statements and even if it did, how do I pass an array of statements to the stored procedure.
I ruled out SQL* Loader because I could not find a way to invoke it it from an ODBC statement. Secondly, it requires the spawining of a new process.
What I am really after is something similar the the SQL Server (forgive me!) BULK INSERT statement where you can simply create an input file with all the records you want to insert, and pass it along in an ODBC statement such as "BULK INSERT <filename>".
Any ideas??
nullHi,
I faced this same situation years ago (Oracle 7.2!) and had the following alternatives.
1) Use a 3rd party tool such as Sagent or CA Info pump (very pricey $$$)
2) Use VisualC++ and OCI to hook into the array insert routines (there are examples of these in the Oracle Home).
3) Use SQL*Loader (the best performance, but no real control of what's happening).
I ended up using (2) and used the Rouge Wave dbtools.h++ library to speed up the development.
These days, I would also suggest you take a look at Perl on NT (www.activestate.com) and the DBlib modules at www.perl.org. I believe they will also do bulk loading.
Your problem is that your program is using Oracle ODBC, when you should be using Oracle OCI for best performance.
null -
How to get current month from filename and bulk insert from text file into table?
I set up some dynamic SQL to help my bulk copy data from a text file to a table. This works fine for files that come in every day; I get the previous day’s data, based on the file name that’s placed
in the folder. That’s why I’m using the ‘-1’. The dates will look like this: '20140131', so I'm using type 112.
declare @fullpath1 varchar(1000)
select @fullpath1 = '''\\system.local\ms\london\FTP\' + convert(varchar, getdate()-1, 112) + '_INDEXPRICES_EOM.SPC'''
declare @cmd1 nvarchar(1000)
print (@cmd1)
select @cmd1 = 'bulk insert [dbo].[SB_Monthly] from ' + @fullpath1 + ' with (FIELDTERMINATOR = ''\t'', FIRSTROW = 5, LASTROW = 675, ROWTERMINATOR=''0x0a'')'
print(@cmd1)
exec (@cmd1)
I think the syntax will be somewhat similar to this:
YEAR(date_column)=YEAR(getdate()) AND MONTH(date_column)=MONTH(getdate())
I’m not totally sure how to incorporate that into my current syntax.
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it.I tried a couple versions of this.
Declare @StartDate Date, @EndDate Date
Select @StartDate = convert(varchar, getdate()-28, 112), @EndDate = convert(varchar, getdate()-1, 112)
BEGIN
declare @fullpath1 varchar(1000)
select @fullpath1 = '''\\ms\london\FTP\' + ''' between ''' + Convert(Varchar(10), @StartDate, 101) + ''' and ''' + Convert(Varchar(10), @EndDate, 101) + '''_SP.SPC'''
declare @cmd1 nvarchar(1000)
print (@cmd1)
select @cmd1 = 'bulk insert [dbo].[SPBMI_Monthly] from ' + @fullpath1 + ' with (FIELDTERMINATOR = ''\t'', FIRSTROW = 5, LASTROW = 675, ROWTERMINATOR=''0x0a'')'
print(@cmd1)
exec (@cmd1)
END
Here’s the string:
bulk insert [dbo].[SPBMI_Monthly] from '\\ms\london\FTP\' between '02/03/2014' and '03/02/2014'_SP.SPC' with (FIELDTERMINATOR = '\t', FIRSTROW = 5, LASTROW = 675, ROWTERMINATOR='0x0a')
The error message I keep getting is:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'between'.
Msg 319, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
I feel like I’m already pushing this thing to the limit.
Maybe this last part isn’t possible.
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it. -
Hi,
I am trying to figure out how to fix my problem
Error: Could not be opened. Operating system error code 5(Access is denied.)
Process Description:
Target Database Server Reside on different Server in the Network
SSIS Package runs from a Remote Server
SSIS Package use a ForEachLoop Container to loop into a directory to do Bulk Insert
SSIS Package use variables to specified the share location of the files using UNC like this
\\server\files
Database Service accounts under the Database is runing it has full permission on the share drive were the files reside.
In the Execution Results tab shows the prepare SQL statement for the BULK insert and I can run the same exact the bulk insert in SSMS without errors, from the Database Server and from the server were SSIS package is executed.
I am on a dead end and I don’t want to re-write SSIS to use Data Flow Task because is not flexible to update when metadata of the table changed.
Below post it has almost the same situation:
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8de13e74-709a-43a5-8be2-034b764ca44f/problem-with-bulk-insert-task-in-foreach-loop?forum=sqlintegrationservicesInsteresting how I fixed the issue, Adding the Application Name into the SQL OLAP Connection String Fixed the issue. I am not sure why SQL Server wasn't able to open the file remotely without this.
-
[Forum FAQ] How to use multiple field terminators in BULK INSERT or BCP command line
Introduction
Some people want to know if we can have multiple field terminators in BULK INSERT or BCP commands, and how to implement multiple field terminators in BULK INSERT or BCP commands.
Solution
For character data fields, optional terminating characters allow you to mark the end of each field in a data file with a field terminator, as well as the end of each row with a row terminator. If a terminator character occurs within the data, it is interpreted
as a terminator, not as data, and the data after that character is interpreted and belongs to the next field or record. I have done a test, if you use BULK INSERT or BCP commands and set the multiple field terminators, you can refer to the following command.
In Windows command line,
bcp <Databasename.schema.tablename> out “<path>” –c –t –r –T
For example, you can export data from the Department table with bcp command and use the comma and colon (,:) as one field terminator.
bcp AdventureWorks.HumanResources.Department out C:\myDepartment.txt -c -t ,: -r \n –T
The txt file as follows:
However, if you want to bcp by using multiple field terminators the same as the following command, which will still use the last terminator defined by default.
bcp AdventureWorks.HumanResources.Department in C:\myDepartment.txt -c -t , -r \n -t: –T
The txt file as follows:
When multiple field terminators means multiple fields, you use the below comma separated format,
column1,,column2,,,column3
In this occasion, you only separate 3 fields (column1, column2 and column3). In fact, after testing, there will be 6 fields here. That is the significance of a field terminator (comma in this case).
Meanwhile, using BULK INSERT to import the data of the data file into the SQL table, if you specify terminator for BULK import, you can only set multiple characters as one terminator in the BULK INSERT statement.
USE <testdatabase>;
GO
BULK INSERT <your table> FROM ‘<Path>’
WITH (
DATAFILETYPE = ' char/native/ widechar /widenative',
FIELDTERMINATOR = ' field_terminator',
For example, using BULK INSERT to import the data of C:\myDepartment.txt data file into the DepartmentTest table, the field terminator (,:) must be declared in the statement.
In SQL Server Management Studio Query Editor:
BULK INSERT AdventureWorks.HumanResources.DepartmentTest FROM ‘C:\myDepartment.txt’
WITH (
DATAFILETYPE = ‘char',
FIELDTERMINATOR = ‘,:’,
The new table contains like as follows:
We could not declare multiple field terminators (, and :) in the Query statement, as the following format, a duplicate error will occur.
In SQL Server Management Studio Query Editor:
BULK INSERT AdventureWorks.HumanResources.DepartmentTest FROM ‘C:\myDepartment.txt’
WITH (
DATAFILETYPE = ‘char',
FIELDTERMINATOR = ‘,’,
FIELDTERMINATOR = ‘:’
However, if you want to use a data file with fewer or more fields, we can implement via setting extra field length to 0 for fewer fields or omitting or skipping more fields during the bulk copy procedure.
More Information
For more information about filed terminators, you can review the following article.
http://technet.microsoft.com/en-us/library/aa196735(v=sql.80).aspx
http://social.technet.microsoft.com/Forums/en-US/d2fa4b1e-3bd4-4379-bc30-389202a99ae2/multiple-field-terminators-in-bulk-insert-or-bcp?forum=sqlgetsta
http://technet.microsoft.com/en-us/library/ms191485.aspx
http://technet.microsoft.com/en-us/library/aa173858(v=sql.80).aspx
http://technet.microsoft.com/en-us/library/aa173842(v=sql.80).aspx
Applies to
SQL Server 2012
SQL Server 2008R2
SQL Server 2005
SQL Server 2000
Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.Thanks,
Is this a supported scenario, or does it use unsupported features?
For example, can we call exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='b64ce7ec-d598-45cd-bbc2-ea202e0c129d'
in a supported way?
Thanks! Josh -
Bulk Insert into a Table from CSV file
I have a CSV file with 1000 records and i have to insert those records into a table.
I tried for Bulk Insert command and Load data infile command but it throws error.
Am using Oracle 10g Express Edition.
I want to achieve it thru query command and not by plsql procedures
Please send me query syntax for this problem. . . .
Thanks in Advance,
Hariharan ST.Hi
If you create an external table that points to your csv file you will then be able populate your table from a query.
See: http://www.astral-consultancy.co.uk/cgi-bin/hunbug/doco.cgi?11210
Hope this helps -
Error while running bulk insert in SSIS package
Hi:
I have an error when I am running bulk insert in SSIS package.
I have implemented an SSIS package to update master data directly from R/3, R/3 gives the file in a specified format, I take this and insert all the records into a temporary table and then update mbr table and process the dimension.
This works perfectly well in our development system where both our app server and sql server on the same box. But in QAS, the 2 servers are separate and when I try to run the SSIS package I get the below error.
We have tested all connections and are able to access the path and file from both app server and sql server using the shared folder. Our basis team says that it is a problem with bulk insert task and nothing to do with any authorization.
Has anyone experienced with this sort of problem in multi server environment? Is there another way to load all data from a file into bespoke table without using bulk insert.
Thanks,
Subramania
Error----
SSIS package "Package.dtsx" starting.
Error: 0xC002F304 at Insert Data Into Staging Table (Account), Bulk Insert Task: An error occurred with the following error message: "Cannot bulk load because the file "
msapbpcapq01\dim\entity.csv" could not be opened. Operating system error code 5(Access is denied.).".
Task failed: Insert Data Into Staging Table (Account)
SSIS package "Package.dtsx" finished: Success.
The program '[2496] Package.dtsx: DTS' has exited with code 0 (0x0).Hi Subramania
From your error:
Error: 0xC002F304 at Insert Data Into Staging Table (Account), Bulk Insert Task: An error occurred with the following error message: "Cannot bulk load because the file "
msapbpcapq01\dim\entity.csv" could not be opened. Operating system error code 5(Access is denied.).".
Let say, server A is where the file entity.csv is located
Please check the Event Viewer->Security of Server A at the time when the SSIS run, there must be an entry with Logon Failure and find what user was used to access the shared path.
If your both servers are not in a domain, create the user in server A with the same name and password and grant read access to the shared folder.
The other workaround is grant read access to Everybody on the shared folder.
Halomoan
Edited by: Halomoan Zhou on Oct 6, 2008 4:23 AM -
BULK INSERT from a text (.csv) file - read only specific columns.
I am using Microsoft SQL 2005, I need to do a BULK INSERT from a .csv I just downloaded from paypal. I can't edit some of the columns that are given in the report. I am trying to load specific columns from the file.
bulk insert Orders
FROM 'C:\Users\*******\Desktop\DownloadURL123.csv'
WITH
FIELDTERMINATOR = ',',
FIRSTROW = 2,
ROWTERMINATOR = '\n'
So where would I state what column names (from row #1 on the .csv file) would be used into what specific column in the table.
I saw this on one of the sites which seemed to guide me towards the answer, but I failed.. here you go, it might help you:
FORMATFILE [ = 'format_file_path' ]
Specifies the full path of a format file. A format file describes the data file that contains stored responses created using the bcp utility on the same table or view. The format file should be used in cases in which:
The data file contains greater or fewer columns than the table or view.
The columns are in a different order.
The column delimiters vary.
There are other changes in the data format. Format files are usually created by using the bcp utility and modified with a text editor as needed. For more information, see bcp Utility.Date, Time, Time Zone, Name, Type, Status, Currency, Gross, Fee, Net, From Email Address, To Email Address, Transaction ID, Item Title, Item ID, Buyer ID, Item URL, Closing Date, Reference Txn ID, Receipt ID,
"04/22/07", "12:00:21", "PDT", "Test", "Payment Received", "Cleared", "USD", "321", "2.32", "3213', "[email protected]", "[email protected]", "", "testing", "392302", "jdal32", "http://ddd.com", "04/22/03", "", "",
"04/22/07", "12:00:21", "PDT", "Test", "Payment Received", "Cleared", "USD", "321", "2.32", "3213', "[email protected]", "[email protected]", "", "testing", "392932930302", "jejsl32", "http://ddd.com", "04/22/03", "", "",
Do you need more than 2 rows? I did not include all the columns from the actual csv file but most of it, I am planning on taking to the first table these specfic columns: date, to email address, transaction ID, item title, item ID, buyer ID, item URL.
The other table, I don't have any values from here because I did not list them, but if you do this for me I could probably figure the other table out.
Thank you very much. -
BULK INSERT into View w/ Instead Of Trigger - DML ERROR LOGGING Issue
Oracle 10.2.0.4
I cannot figure out why I cannot get bulk insert errors to aggregate and allow the insert to continue when bulk inserting into a view with an Instead of Trigger. Whether I use LOG ERRORS clause or I use SQL%BULK_EXCEPTIONS, the insert works until it hits the first exception and then exits.
Here's what I'm doing:
1. I'm bulk inserting into a view with an Instead of Trigger on it that performs the actual updating on the underlying table. This table is a child table with a foreign key constraint to a reference table containing the primary key. In the Instead of Trigger, it attempts to insert a record into the child table and I get the following exception: +5:37:55 ORA-02291: integrity constraint (FK_TEST_TABLE) violated - parent key not found+, which is expected, but the error should be logged in the table and the rest of the inserts should complete. Instead the bulk insert exits.
2. If I change this to bulk insert into the underlying table directly, it works, all errors get put into the error logging table and the insert completes all non-exception records.
Here's the "test" procedure I created to test my scenario:
View: V_TEST_TABLE
Underlying Table: TEST_TABLE
PROCEDURE BulkTest
IS
TYPE remDataType IS TABLE of v_TEST_TABLE%ROWTYPE INDEX BY BINARY_INTEGER;
varRemData remDataType;
begin
select /*+ DRIVING_SITE(r)*/ *
BULK COLLECT INTO varRemData
from TEST_TABLE@REMOTE_LINK
where effectiveday < to_date('06/16/2012 04','mm/dd/yyyy hh24')
and terminationday > to_date('06/14/2012 04','mm/dd/yyyy hh24');
BEGIN
FORALL idx IN varRemData.FIRST .. varRemData.LAST
INSERT INTO v_TEST_TABLE VALUES varRemData(idx) LOG ERRORS INTO dbcompare.ERR$_TEST_TABLE ('INSERT') REJECT LIMIT UNLIMITED;
EXCEPTION WHEN others THEN
DBMS_OUTPUT.put_line('ErrorCode: '||SQLCODE);
END;
COMMIT;
end;
I've reviewed Oracle's documentation on both DML logging tools and neither has any restrictions (at least that I can see) that would prevent this from working correctly.
Any help would be appreciated....
Thanks,
SteveThanks, obviously this is my first post, I'm desperate to figure out why this won't work....
This code I sent is only a test proc to try and troubleshoot the issue, the others with the debug statement is only to capture the insert failing and not aggregating the errors, that won't be in the real proc.....
Thanks,
Steve
Maybe you are looking for
-
Hi, Experts, I was wondering when doing Foreign currency validation, The system get the Profit center defaultly, when posting the variance. I am wondering where did system get the Profit center when we do FAGL_FC_VAL?
-
Hi all I have just ordered an iPad 2. I want to be able to connect it to my tv and a projector at work using either RCA or VGA connectors. Will this display everything thing that is on my screen? eg the springboard/home screen as well as different ap
-
Connecting 8800 to a Noki car Kit
Does anybody know how to connect up to a Nokia car Kit. When I try and pair via bluetooth to the device it recognises the car kit but says that it cannot connect. Is there a compatability problem? Thanks Conker
-
Elements 7 freezing/non-responding issues
I have been trying to work with Elements 7 and am frustrated with it freezing up when getting into the organizer and only doing one or two "layers" of viewing and editing. I am running Vista and everything is up to date. Memory is 6GB or RAM, and d
-
Temporary text on billing document and delivery
Dear all, I have the following question: Is it possible to add a temporary text on the billing doc and delivery doc? For example: 'Closed between Christmas & New year' thanks, Ton