由买买提看人间百态

topics

全部话题 - 话题: sqlldr
1 (共1页)
c*****d
发帖数: 6045
1
你开始没说清楚,他理解成另外一个意思了
如果你是要把text file中的数据load到oracle的某一个表里
用oracle自带的sqlldr就可以了
至于你们dba说要一个column一个的看
我不知道他什么意思
如果只是要确认text中的数据不会与table定义的类型冲突
我就会建一个临时表
取text file中前100条数据
用sqlldr导入这100条数据到临时表里
确认没问题后再把所有数据导入真正的数据表
另外在sqlldr的control file里加上discard file和bad file
这样有冲突的数据会存在这两个文件里
g***o
发帖数: 297
2
来自主题: Database版 - question about SQL*LOADER
I got a very strange question about SQL*LOADER.
when I checked from universal installer, it shows me a location of
sql*LOADER like ora_home/ora90/oracel_rdbms_sqlldr,
but I just could not find this directory from my PC,
and when I tried to export data from text file into oracle by using sqlldr
command, it gave me an error like
sqlldr is not recognized as a internal command.
Does anybody know what the problems is here and how to fix it. thanks very much.
c*****d
发帖数: 6045
3
是的,在sqlldr之前表要存在
大部分情况下,导入之前应该知道表的每个字段的含义和数据类型
否则导入这些数据有什么用呀
一种方法是把所有字段都定义成varchar2
导入之后再说
另外一种更规范的做法
我在前面的帖子里说了
sqlldr的control file可以规定bad file
可以将导入过程中类型错误的记录存在这个文件里
这样你就知道那些行被剔除出来了
比如应该是两个字段(number, varchar2)
500 abc
结果数据文件里存的是
500abc
那么对生成的bad file修改之后
把bad file作为新的数据文件进行导入

了.
o**********a
发帖数: 330
4
来自主题: Database版 - C# DateTime to Oracle Date (转载)
谢谢回复.sqlldr 应该也可以在code里面call一个可执行文件,然后用sqlldr 弄进去
,但是看同事用的这个bulkcopy 挺方便的。
我debug的时候看了,在OracleBulkCopy之前,在memory table里面(DataTable)数据
是正确的。但是放到数据库里就错了。
fyi..
今天写了个test的code,在我同事的机器上run就能正确地把日期插入到oracle table
里面的,但是在我的机器上run,还是出现同样的问题,就是本来应该是 10/18/2013,
但是插进去后变成10/18/1320。
我和同事都是用的同一个version of ODP for .NET. 我们俩的电脑也一样,都是win7
,vs2010。
真是奇怪。
还有一个比较有意思的就是,我们老印推荐的方法 在code里面生产DateTime的时候这
么写
new DateTime(1320,10,18),果然生效,插入后就变成正确地date在oracle里面。
这个会不会和我c盘装的oracle client 有关系,我好像装了两个oracle client
l****a
发帖数: 336
5
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
v*****r
发帖数: 1119
6
数据库的database character一般是不应该改的(除非是需要upgrade).
这个问题很简单:
1. Make sure your target database characterset support German characters.
SQL> select * from v$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET';
2. You will need to identify the character set of the input file, then
either setting CHARACTERSET parameter in sqlloader control file to that
value; or settting NLS_LANG environment variable of you cient pc (if you don
't set CHARACTERSET parameter, sqlloader will use the the NLS_LANG setting
o
a***i
发帖数: 6
7
来自主题: Database版 - How to download Oracle data to files
We have a very small database that needs all the data output
to files. Seems like 'sqlldr' or 'sqlload' didn't work, and
'exp' requires DBA previlege.
Is there anything else other than 'select *' and save to
files?
h**e
发帖数: 1
8
来自主题: Database版 - 非高人莫答
建了一个表:
CREATE TABLE aa
( id NUMBER,
description VARCHAR2(3000));
用SQLLDR, CONTROL FILE 如下:
LOAD DATA
INFILE 'D:\desc.CSV'
INTO TABLE AA
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
id,
description
)
desc.CSV:
1001,"Former telephone-service sales agency CTC
Communications Group is morphing into a marketer of multiple
modes of modern media. It holds CTC Communications Corp.,
which sells integrated telecommunications services,
including local and long-distance, network products and
servi
s****s
发帖数: 2163
9
来自主题: Database版 - 好像偶的Oracle到了极限?

If you care about turn about time (reponse time), try to
create some
index if your insert statment has "where" clause.
If you just loading a lot of thing into oracle table, try to
using bulk loading,
like sqlldr, or direct path loading.
The proformance is heavily depends on your hard ware and
software setting.
If you are DBA, try to increase the memory size.
If you care about the total thoughtput, it is another
picture. I believe,
there is a "oracle tuning" secion in oracle document. You
can tr
z*3
发帖数: 33
10
来自主题: Database版 - tools for importing data into oracle
推荐自己先见个表,然后sqlldr
c*****d
发帖数: 6045
11
MS SQL自己的dts就可以做
或者把数据倒成文本格式,在oracle里用sqlldr导入
c*****d
发帖数: 6045
12
access --> text -- through sqlldr --> oracle
l****a
发帖数: 336
13
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
l****a
发帖数: 336
14
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
l****a
发帖数: 336
15
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
l****a
发帖数: 336
16
现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库的
时候, 可以正常显示为 a 上边加2个点. 但是用.ctl file load数据, 该字母居然显示
为"?".
database里这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
l****a
发帖数: 336
17
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
l****a
发帖数: 336
18
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
l****a
发帖数: 336
19
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
s*******1
发帖数: 40
20
我现在有一份文件, 含有德国字母, 比如a 上边加2个点. 我用insert语句加入数据库
的时候, 可以正常显示为 a 上边加2个点. 但是用ctl load数据, 该字母居然显示为"?
".
database的这个column 设定是 varchar2(100).
试过改成 varchar2 (100 char), 不灵.
数据库本身不能改变character set, 公司不让.
向高手们求助, 该咋办?
v*****r
发帖数: 1119
21
数据库的database character一般是不应该改的(除非是需要upgrade).
这个问题很简单:
1. Make sure your target database characterset support German characters.
SQL> select * from v$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET';
2. You will need to identify the character set of the input file, then
either setting CHARACTERSET parameter in sqlloader control file to that
value; or settting NLS_LANG environment variable of you cient pc (if you don
't set CHARACTERSET parameter, sqlloader will use the the NLS_LANG setting
o
r********9
发帖数: 1116
22
来自主题: Database版 - oracle load数据怎么会这么慢?
在使用oracle, 有60多millions的记录文件(约2.5g)要用sqlldr导入到一个空表中。
速度慢得令人发指,昨天晚上开始,到今天下午十几个小时一点动静都没有。然后傍晚
的时候终于开始有数据导入了,龟速,真的是龟速,平均一分钟不到10k的记录。照这
个速度,等load完要100多个小时了。
这个空表之前有创建过index,这可能会是速度慢的原因吗?
c*****d
发帖数: 6045
23
来自主题: Database版 - oracle load数据怎么会这么慢?
lz said "在使用oracle, 有60多millions的记录文件(约2.5g)要用sqlldr导入到一个
空表中。"
x***z
发帖数: 89
24
用SSH连接到远程服务器的oracle,但没在自己电脑上安装oracle
可以用sqlldr从本地硬盘导excel表到oracle的table中么?
也可以用imp和exp在本地硬盘和远程oracle数据库中,导入导出数据么?
请问如何奥,多谢了
h****p
发帖数: 25
25
1.远程导入excel
可以. sqlldr user/pwd@remote_db ...
注意连接串要配置好,其实sftp把文件传到远程更简单
2.也可以用imp和exp在本地硬盘和远程oracle数据库中,导入导出数据么?
不是很明白,你不是本地没有oracle数据库吗?
其实,任意一台机器上只要有imp和exp这两个工具,都可以对能够链接的数据库进行导
入导出操作,无论是本地还是远程。
B*****g
发帖数: 34098
26
把infile从control file里拿掉
sqlldr ... control=??? data=???
n****f
发帖数: 905
27
来自主题: Database版 - C# DateTime to Oracle Date (转载)
这个任务可以直接完成, 不用借助 C#。
1. 在 Oracle 建立一个表:
CREATE TABLE oldmanpushca.DATE_TEST
(
COL1 VARCHAR2(100 BYTE),
COL_DATE DATE
);
2. 用 NOTEPAD 在 C:\OracleLoader\ 盘建立了一个 CSV 文件:
C:\OracleLoader\DATE_TEST.CSV, 内容如下:
C1R1 TEXT 1, 2013/10/22
C1R2 TEXT 2, 2014/10/22
C1R3 TEXT 3, 2015/10/22
3. 用 NOTEPAD 在 C:\OracleLoader\ 盘建立了一个控制文件:
C:\OracleLoader\Para.CTL , 内容如下:
LOAD DATA
infile 'C:\OracleLoader\DATE_TEST.CSV'
APPEND
INTO TABLE oldmanpushca.DATE_TEST
FIELDS TERMINATED BY ',' optionally enclosed by... 阅读全帖
s********e
发帖数: 893
28
来自主题: Database版 - C# DateTime to Oracle Date (转载)
你说的这个情况用sqlldr 是很方便的。
如果必须要用code实现,你先把Datatable里的date输出到一个label看看是不是在写入
oracle以前那个year就乱了。或者某个地方把日期格式化一下。
to_date('" & Product_Date & "', 'mm/dd/yyyy')
n****f
发帖数: 905
29
来自主题: DotNet版 - C# DateTime to Oracle Date
这个任务可以直接完成, 不用借助 C#。
这种方式容许你导入很大(1G,10G。。)的 CSV 文件。
1. 在 Oracle 建立一个表:
CREATE TABLE oldmanpushca.DATE_TEST
(
COL1 VARCHAR2(100 BYTE),
COL_DATE DATE
);
2. 用 NOTEPAD 在 C:\OracleLoader\ 盘建立了一个 CSV 文件:
C:\OracleLoader\DATE_TEST.CSV, 内容如下:
C1R1 TEXT 1, 2013/10/22
C1R2 TEXT 2, 2014/10/22
C1R3 TEXT 3, 2015/10/22
3. 用 NOTEPAD 在 C:\OracleLoader\ 盘建立了一个控制文件:
C:\OracleLoader\Para.CTL , 内容如下:
LOAD DATA
infile 'C:\OracleLoader\DATE_TEST.CSV'
APPEND
INTO TABLE oldmanpushca.DATE_TEST
FIELDS TERMINATE... 阅读全帖
m*********u
发帖数: 1491
30
来自主题: DataSciences版 - 如何合并两个数据文件 (转载)
首先要知道数据以何种format存在,
然后用bcp, bulk insert,import, SSIS把数据load到SQL Server
或者用sqlldr , bulk insert把数据Load 到oracle 数据库
根据需要看是否需要做数据清理。
之后就用 left table join 即可达成目的。
1 (共1页)