GVKun编程网logo

oracle sqlload 导入数据(oracle的sqlload导入详解)

4

对于oraclesqlload导入数据感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oracle的sqlload导入详解,并为您提供关于Centos6.7安装oracle11gR2及配置开机启

对于oracle sqlload 导入数据感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oracle的sqlload导入详解,并为您提供关于Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据、django导出数据 导入数据、impdp 导入数据 覆盖,追加等操作、Mongoexport 导出数据,Mongoimport 导入数据,mongodump 备份数据,mongorestore 恢复恢复的有用信息。

本文目录一览:

oracle sqlload 导入数据(oracle的sqlload导入详解)

oracle sqlload 导入数据(oracle的sqlload导入详解)

sqlload导入大量数据确实有大量优势,是一个比较好的工具。

  1 public class OracleLoadDataHelperUntil {
  2 
  3     private static String databaseUrl = ProperUtil.getValue("db.properties", "jdbc.url");
  4 
  5     private static String user = ProperUtil.getValue("db.properties", "jdbc.username");
  6 
  7     private static String pwd = ProperUtil.getValue("db.properties", "jdbc.password");
  8 
  9     private static String driver = ProperUtil.getValue("db.properties", "jdbc.driver");
 10 
 11     private static String fileRoute = "";
 12 
 13     /**
 14      * 链接数据库地址
 15      */
 16     private static String baseUrl = "";
 17 
 18     public OracleLoadDataHelperUntil() {
 19 
 20     }
 21 
 22     static {
 23         try {
 24             String url = databaseUrl.substring(databaseUrl.indexOf("@"));
 25             baseUrl = url.replaceAll("@", "//").substring(0, url.lastIndexOf(":")+1) + "/"
 26                     + url.substring(url.lastIndexOf(":") + 1);
 27             Class.forName(driver);
 28         } catch (ClassNotFoundException e) {
 29             e.printStackTrace();
 30         }
 31     }
 32 
 33     /**
 34      * 根据表名称获取数据库字段
 35      * 
 36      * @param tableName
 37      * @return
 38      * @throws Exception
 39      */
 40     private static List<String> getFieldsByTableName(String tableName) throws Exception {
 41         List<String> fields = Lists.newArrayList();
 42         Connection conn = DriverManager.getConnection(databaseUrl, user, pwd);
 43         String sql = "select COLUMN_NAME from USER_TAB_COLUMNS where TABLE_NAME=upper(''" + tableName + "'')";
 44         Statement stmt = conn.createStatement();
 45         ResultSet rs = stmt.executeQuery(sql);
 46         String filed = "";
 47         while (rs.next()) {
 48             filed = rs.getString("COLUMN_NAME");
 49             fields.add(filed);
 50         }
 51         rs.close();
 52         conn.close();
 53         return fields;
 54     }
 55 
 56     /**
 57      * 获取控制命名字符串
 58      * 
 59      * @param fileName  导入的文件名,全路径
 60      * @param tableName 表名
 61      * @param delimiter 分割符
 62      * @return
 63      */
 64     private static String getStrCtr(String fileName, String tableName, String delimiter, List<String> fileds) {
 65         StringBuffer sb = new StringBuffer();
 66         String lineSeparator = System.getProperty("line.separator");
 67         // 0是从第一行开始 1是 从第二行
 68         sb.append("OPTIONS (skip=0)").append(lineSeparator);
 69         // 加载数据文件
 70         sb.append("LOAD DATA").append(lineSeparator);
 71         // 防止中文乱码
 72         sb.append("CHARACTERSET ZHS16GBK").append(lineSeparator);
 73         sb.append("INFILE ").append("\''").append(fileName).append("\''").append(lineSeparator);
 74         if(Strings.isStringEmpty(delimiter)) {
 75             sb.append("\"str X''170A''\"").append(lineSeparator);
 76         }
 77         // 覆盖写入
 78         sb.append("APPEND INTO TABLE ").append(tableName).append(lineSeparator);
 79         sb.append("REPLACE").append(lineSeparator);
 80         // 数据中每行记录用","分隔 ,TERMINATED用于控制字段的分隔符,可以为多个字符。
 81         if(Strings.isStringEmpty(delimiter)) {
 82             sb.append("FIELDS TERMINATED BY X''lib''").append(lineSeparator);
 83         }else {
 84             sb.append("FIELDS TERMINATED BY ''"+delimiter+"''").append(lineSeparator);
 85         }
 86         // 将数据写入对应的字段
 87         sb.append("trailing nullcols ( ").append(lineSeparator);
 88         sb.append(getFieldsStr(fileds)).append(lineSeparator);
 89         sb.append(")");
 90 
 91         return sb.toString();
 92     }
 93     
 94 
 95     private static String getFieldsStr(List<String> fileds) {
 96         StringJoiner sj = new StringJoiner("," + System.getProperty("line.separator"));
 97         for (String s : fileds) {
 98             sj.add(s);
 99         }
100         return sj.toString();
101     }
102 
103     /**
104      * 获取控制文件的路径
105      * 
106      * @param fileRoute   数据文件地址路径
107      * @param fileName    数据文件名
108      * @param tableName   表名
109      * @param delimiter   分隔符
110      * @param fieldNames  属性集合
111      * @param ctlfileName 控制文件名
112      * @return
113      */
114     private static String getCtlFileUrl(String fileRoute, String fileName, String tableName, String delimiter,
115             List<String> fieldNames, String ctlfileName) {
116         String ctlFileUrl = "";
117         FileWriter fw = null;
118         try {
119             String strctl = getStrCtr(fileRoute + fileName, tableName, delimiter, fieldNames);
120             fw = new FileWriter(fileRoute + "" + ctlfileName);
121             fw.write(strctl);
122             ctlFileUrl = fileRoute + "" + ctlfileName;
123         } catch (IOException e) {
124             e.printStackTrace();
125         } finally {
126             try {
127                 fw.flush();
128                 fw.close();
129             } catch (IOException e) {
130                 e.printStackTrace();
131             }
132         }
133         return ctlFileUrl;
134     }
135 
136     /**
137      * 判断是什么系统,true 为windows,false为linux
138      * 
139      * @return
140      */
141     private static Boolean isOsWin() {
142         Boolean flag = Boolean.FALSE;
143         String os = System.getProperty("os.name");
144         if (os.toLowerCase().startsWith("win")) {
145             flag = Boolean.TRUE;
146         }
147         return flag;
148     }
149 
150     /**
151      * 
152      * @param fileRoute   文件路径
153      * @param ctlfileName 控制文件路径
154      * @param logfileName 日志文件路径
155      * @param flag        是否立即执行,true执行命令,false不执行
156      * @return sqlload的执行语句
157      */
158     private static String excuteLoadData(String fileRoute, String ctlfileName, String logfileName, boolean flag) {
159         InputStream ins = null;
160         Process process = null;
161         String dos = "sqlldr " + user + "/" + pwd + "@" + baseUrl + " control=" + fileRoute + "" + ctlfileName + " log="
162                 + fileRoute + "" + logfileName;
163         System.out.println("dos:" + dos);
164         if(flag==false) {
165             return dos;
166         }
167         try {
168             if (isOsWin().equals(Boolean.FALSE)) {
169                 process = Runtime.getRuntime().exec(dos);
170             } else {
171                 String[] cmd = new String[] { "cmd.exe", "/C", dos };
172                 process = Runtime.getRuntime().exec(cmd);
173             }
174             ins = process.getInputStream();
175             Charset charset=Charset.forName("GBK");
176             BufferedReader reader = new BufferedReader(new InputStreamReader(ins,charset));
177             String line = null;
178             while ((line = reader.readLine()) != null) {
179                 String msg = new String(line.getBytes(), "GBK");
180                 System.out.println(line);
181             }
182             int exitValue = process.waitFor();
183             if (exitValue == 0) {
184                 System.out.println("返回值:" + exitValue + "\n数据导入成功");
185 
186             } else {
187                 System.out.println("返回值:" + exitValue + "\n数据导入失败");
188             }
189             process.getOutputStream().close();
190         } catch (Exception e) {
191             e.printStackTrace();
192         }
193         return dos;
194     }
195 
196     /**
197      * 
198      * 执行sqlload数据导入方法
199      * 
200      * @param filePath 文件根路径
201      * @param fileName 数据文件 .dat文件
202      * @param tableName 表名
203      * @param fieldNames 属性字段
204      * @param flag 是否立即执行,true执行命令,false不执行
205      * @return sqlload的执行语句
206      * @throws Exception 
207      */
208 
209     public static String excuteSqlLoadImportData(String filePath, String fileName, String tableName,String delimiter,List<String> fields, boolean flag) throws Exception {
210         String str = "";
211         String ctlfileName = tableName + ".ctl";
212         String logfileName = tableName + ".log";
213         if (Strings.isStringEmpty(filePath)) {
214             filePath = fileRoute;
215         }
216         if(CollectionUtils.isEmpty(fields)) {
217             fields=getFieldsByTableName(tableName);
218         }
219         String fileUrl = getCtlFileUrl(filePath, fileName, tableName, delimiter, fields, ctlfileName);
220         if (!Strings.isStringEmpty(fileUrl)) {
221             str = excuteLoadData(filePath, ctlfileName, logfileName, flag);
222         }
223         return str;
224     }
225 
226 }

 

Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据

Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据

版本:

Centos6.7(桌面版);oracle11gR2(两个压缩包);jdk1.7


1. 软件准备:

0. Centos系统要求:
1) 内存(RAM) 2GB+
2) 虚拟内存 swap 建议:内存为 2GB~16GB 时swap大小为内存的大小;内存超过 16GB 时swap保持16GB

1. Centos6.7桌面版安装好后,默认已经安装了openjdk,所以需要自己再安装个oracle,比如下面的:
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03,mixed mode)

2. Centos6.7桌面版安装好后,配置yum源,直接使用的是安装盘iso挂载:
/etc/yum.repos.d/CentOS-Media.repo:
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS_6.7_Final
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
3. 下载oracle11g的安装文件,并拷贝到/opt目录下面:
解压缩后生成database文件夹,解压缩命令: unziplinux.x64_11gR2_database_1of2.zip && unziplinux.x64_11gR2_database_1of2.zip ; (unzip 是centos系统自带的);

4. 安装需要的编译软件gcc
yum install gcc -y

5. 安装org,这个不一定需要,不过我安装了(应该不需要安装):
yum install xorg-x11-apP* -y

2. 安装oracle

1. 新建oracle用户及组
groupadd oracle
useradd -g oracle -s /bin/bash oracle -m

2. 新建oracle安装目录并指定oracle权限
mkdir /usr/oracle
chmod -R oracle:oracle /usr/oracle

3. 进入/opt/database目录执行:
su oracle
./runInstaller

4. 出现NoClassDefFoundError的错误

1)退出oracle用户;返回root用户
2)分别执行:
disPLAY=:0.0
export disPLAY
xhost +
3) 进入oracle用户: su oracle
4) 执行
disPLAY=:0.0
export disPLAY
5) 然后再次执行安装命令 ./runInstaller 即可;

5. 安装过程中出现错误,经查看后,如果没有影响,可以选择Continue;

6. 安装好后,oracle应该是已经启动了的,可以直接使用连接工具连接,检验是否可以连接;(在安装的过程的最后两步会有需要使用root权限执行的脚本,需要使用root执行);

3.配置oracle开机启动

使用root用户进行下面的操作
1. 配置/etc/oratab
修改最后的N为Y,如下:

2. 添加文件:vim /etc/rc.d/init.d/oracle

#!/bin/bash
# description: Startup Script for Oracle Databases
# /etc/init.d/oracle
export ORACLE_SID=orcl.centos.com
export ORACLE_BASE=/usr/oracle
export ORACLE_HOME=/usr/oracle/app/oracle/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
su oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/oracle
echo "OK"
;;
stop)
echo -n "Shutdown Oracle: "
su oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/oracle
echo "OK"
;;
*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0

注意修改ORACLE_SID 以及 oracle_base 、oracle_home的路径

修改权限: chmod 777 /etc/rc.d/init.d/oracle

3. 添加oracle服务
chkconfig --add /etc/rc.d/init.d/oracle 
chkconfig oracle on

4. 开机重启,再次使用客户端连接oracle查看是否开机启动;

4. 新建表空间及用户

1. 新建表空间,比如我要建立的表空间是test_my
	 createtablespacetest_my 
	 datafile'/home/app/oracle/oradata/oracle11g/test_my01.dbf'size800M 
	 autoextendon 
	next50M 
maxsizeunlimited

2. 因为有时数据过大,需要添加文件,可以使用:
	altertablespacetest_myadd 
	datafile'/home/app/oracle/oradata/oracle11g/test_my02.dbf'size800M 
	 autoextendonnext50M 

maxsize1000M;

3. 新建用户,例如test_user:
create user test_user identified by test_user default tablespace test_my;

4. 为test_user 授权dba权限
grant  dba to test_user;

5. 导入/导出数据

导出:(user代表用户,password代码密码,ip即oracle服务器ip,database即oracle的SID,file可以自己指定路径)
Exp user/password@ip:1521/database file=/opt/test.dmp
导入:
imp user/password@ip:1521/database file =/opt/test.dmp fromuser=test_user touser=test_user ignore=y



分享,成长,快乐

脚踏实地,专注

django导出数据 导入数据

django导出数据 导入数据

                                            <table&gt;<tbody><tr&gt;

<td><pre>1
2

appname.json python manage.py loaddata appname.json

总结

以上是小编为你收集整理的django导出数据 导入数据全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

impdp 导入数据 覆盖,追加等操作

impdp 导入数据 覆盖,追加等操作

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

impdp 导入数据 覆盖,追加等操作
zkk1973
于 2018-11-17 13:47:31 发布 30330
收藏 37
分类专栏: oracle 文章标签: oracle impdp 追加数据
版权
oracle 专栏收录该内容
5 篇文章 0 订阅
订阅专栏

oracle10g 之后 impdp 的 table_exists_action 参数

impdp username/password table_exists_action=truncate  directory=DATA_PUMP_DIR dumpfile=expdpfilename.dmp logfile=implog.log


table_exists_action:

skip 是如果已存在表,则跳过并处理下一个对象;

append 是为表增加数据;

truncate 是截断表,然后为其增加新数据;

replace 是删除已存在表,重新建表并追加数据;
————————————————
版权声明:本文为 CSDN 博主「zkk1973」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zkk1973/article/details/84184157

Mongoexport 导出数据,Mongoimport 导入数据,mongodump 备份数据,mongorestore 恢复恢复

Mongoexport 导出数据,Mongoimport 导入数据,mongodump 备份数据,mongorestore 恢复恢复

一:Mongoexport 导出数据
  1, 导出 json 数据
    mongoexport -d db -c collection -o save-file.dat

  2, 导出 CSV 数据

    mongoexport -d db -c collection --type=csv -f field1,field2 -o save-file.dat

       说明:db 目标数据库,collection 目标集合,save-file.dat 要保存的文件,--type 指定导出的格式,默认是 json,-f 后面是需要导出的字段名称,多个字段名用逗号隔开

二:mongoimport 导入数据

  1, 导入 json 数据
    mongoimport -d db -c collection --file save-file.dat

  2, 导入 CSV 数据

    mongoimport -d db -c collection --type=csv --headerline --file save-file.dat

       说明:db 目标数据库,collection 目标集合,save-file.dat 要导入的文件,--type 指定导出的格式,默认是 json,--headerline 批明不导入第一行

三:Mongodump 备份数据
   mongodump -d db

   mongodump -d db -o save-dir

       说明:db 目标数据库,save-dir 要保存的文件目录,默认是 dump

四:Mongorestore 备份数据
   mongorestore -d db

   mongorestore -d db save-dir

       说明:db 目标数据库,save-dir 要保存的文件目录,默认是 dump

 

今天关于oracle sqlload 导入数据oracle的sqlload导入详解的分享就到这里,希望大家有所收获,若想了解更多关于Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据、django导出数据 导入数据、impdp 导入数据 覆盖,追加等操作、Mongoexport 导出数据,Mongoimport 导入数据,mongodump 备份数据,mongorestore 恢复恢复等相关知识,可以在本站进行查询。

本文标签: