Oracle 数据库导入数据和编码问题

配置 control 文件:

load data
characterset utf8
append into table role_res_gold
fields terminated by ‘;‘
TRAILING NULLCOLS
(
F_USERNAME      ,
F_RES_TYPE      ,
F_INDEX            ,
F_NAME            ,
F_COUNT            ,
F_GAIN_TYPE        CONSTANT  "aa", //CONSTANT 是关键字,用常量替换行里面内容
F_CONSUME_TYPE    FILLER, // FILLER 关键字 此列的数值不会被装载
RECORD_DATE     date "yyyy-mm-dd hh24:mi:ss" nullif (RECORD_DATE="null")
)

导入命令

sqlldr userid=username/passwd@sid control=ctl.txt data=$file direct=true

特别说明:

control 文件里面配置的是源文件编码: characterset utf8

导入到数据库后,就是数据库的默认编码,不再是源文件编码!!!

查看 Oracle 编码:

select userenv(‘language‘) from dual;

例如:我的数据库是 SIMPLIFIED CHINESE_CHINA.ZHS16GBK,导入后字段内容的编码就变成了GBK

表装载的方法:

INSERT  这是缺省方法。该方法假设在数据装载前表是空的,如果在表中有记录,SQLLDR退出,并报:SQLLDR-601: FOR INSERT OPTION,TABLE MUST BE EMPTY,ERROR ON TABLE DEPT

APPEND  这种方法允许记录被添加到数据库表中,而且不影响已经存在的记录

REPLACE  这种方法首先删除表中已经存在的记录,然后开始装载新的记录。注意,当老记录被删除时,表上的任意删除触发器将被触发

TRUNCATE  这种方法在装载数据前,使用SQL命令TRUNCATE 删除老的记录,因为去除了触发器的触发并且没有创建回滚,所以这种方法要比REPLACE快得多。

原文地址:https://www.cnblogs.com/morgan363/p/12153402.html

时间: 2024-10-07 10:13:38

Oracle 数据库导入数据和编码问题的相关文章

ORacle数据库导入导出数据

一.导出1.导出整个数据库通用命令:exp 数据库用户名/数据库密码@数据库别名 file=E:\目录\文件名.dmp举例:exp gwyxgldb /gwyxgldb @192.168.0.31  file=d:\gwyxgldb.dmp 2.导出部分表通用命令exp 数据库用户名/数据库密码@数据库别名 GRANTS=Y TABES=(要导出的表1, 要导出的表2,...) file=E:\目录\文件名.dmp exp gwyxgldb /gwyxgldb @192.168.0.31 gra

oracle数据库导入导出命令!

Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失). Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远

oracle imp导入数据到另一个表空间

http://blog.163.com/[email protected]/blog/static/7156283420100531431855/ 1.在第一个数据库导出数据:qlyg_xs_db_chinatelecom_0910191029.dmp(用户为QLYG_XS) 2.将qlyg_xs_db_chinatelecom_0910191029.dmp 扶着到第二个数据库所在主机上 3.第二个数据库建立需要导入的表空间和用户QLYGKQ,QLYGKQ1(用户QLYGKQ1的默认表空间为QL

Oracle数据库用户数据完整备份与恢复

使用PLSQL-Developer工具可以快速便捷地完成Oracle数据库用户.表的备份恢复. Oracle数据库用户数据完整备份与恢复 1. 备份 1.1   PL/SQL->工具->导出用户对象,选项如图 常用的用户对象包括: TABLE,SEQUENCE,VIEW,PACKAGE,TYPE,FUNCTION,PROCEDURE,PACKAGE BODY,TREGGER 选择需要导入的用户对象,导出.sql文件,此步骤导出的是建表语句,包括存储过程.触发器.视图等 . 1.2  PL/SQ

Oracle数据库导入导出实战总结(同版本)

今天闲來无事,就导了一个数据库玩玩,顺便总结下 0.cmd 命令 管理员权限登录数据库 sqlplus /  as sysdba 1.cmd 连接远程数据库 sqlplus xn_balance/[email protected]:1521/orcl --------导出 2.cmd 命令导出数据库(没必要连上数据库,直接导) exp xn_balance/[email protected]:1521/orcl file=d:/daochu.dmp full=y 3. 将数据库中system用户

Oracle 导出导入数据

最近用到Oracle导出导入数据,在网上看了别人的一些文章,总结如下: Oracle导出导出有两中方式:一.利用exp imp导出导入:二.利用Oracel数据泵expdp impdp导出导入. 一.利用exp imp导出导入 exp imp 语法如下: exp: 1) 将数据库orcl完全导出 exp system/[email protected] file=d:\orcl_bak.dmp full=y 2) 将数据库中system用户的表导出 exp system/[email prote

SQL*Loader 从文本文件向数据库导入数据

之前我的一遍 blog 写了怎样使用 Toad 这个工具从 excel 或者 csv 文件向数据库导入数据. 其实 Oracle 自己提供了这样一个工具, 叫做 SQL*Loader. 这个工具使用起来没有那么直接, 也比较容易出错, 但是它非常适合导入大数据量的文本. 执行效率非常高, 号称一小时能导入100 G (听说). 这里给出一个简单的例子, 怎么去使用它. 比方说, 有个客户想要从他之前使用的 ERP 软件里面, 把数据导入到 Oracle 的 EBS. 当然他不可能直接表对表的复制

向orale数据库导入数据的时候报 ORA-01658

问题描述:在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误. 这是由于表空间对应的数据文件中数据量超过Oracle在创建表空间的时候数据文件初始化大小值,当数据量达到这个值,再向数据库中导入数据就会报错. 解决办法:解决办法就是扩展表空间,可以选择将表容量扩大,比如扩展到5000MB,或者当表空间不够时每次自动增加一定的容量,如每次自增200M. -- 查询当前数据库中表空间是否为自动扩展 select tablespace_na

SQL从其他服务器数据库导入数据到本地数据库中

EXEC sp_dropserver 'ITSV2', 'droplogins' exec sp_addlinkedserver 'ITSV2' , '' , 'SQLOLEDB' , '168.9.123.123' exec sp_addlinkedsrvlogin 'ITSV2' , 'false' , null , 'sa' , 'sa' drop table test2; select top 12 * into test2 from ITSV2.InfoDB.dbo.city sele