热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

10月的一些知识点

Oracle导入导出文本数据表结构--CreatetablecreatetableSTUDENT(SNONUMBER,NAMEVARCHAR2(12))1.spool导出数

Oracle导入导出文本数据

 

表结构

-- Create table
create table STUDENT
(
  SNO  NUMBER,
  NAME VARCHAR2(12)
)

 

1. spool导出数据的使用

使用spool命令导出数据

--sp.sql

 

set echo off

set trimspool on

set linesize 900

set pagesize 200

set heading off

set feedback off

set term off

spool data.txt

 

select sno||','||name from student ;

 

spool off

/

 

E:/test>sqlplus sun/sun

 

SQL> @sp

 

--data.txt

1,李雷

 

2. sqlldr导入数据的使用

in.txt 中的数据导入到表student中

Load.ctl

 

LOAD DATA

INFILE 'in.txt'

append INTO TABLE student

 

FIELDS TERMINATED BY ','

TRAILING NULLCOLS

(

name,

FILLER_1 FILLER, -- 过滤

sno

--  EFF_DATE   date  "yyyy-mm-dd hh24:mi:ss"    日期格式

)

 

select * from student

SNO       NAME

1                            李雷

 

 

在命令行中执行

E:/test>sqlldr sun/sun cOntrol=load.ctl

 

SQL*Loader: Release 11.1.0.6.0 - Production on 星期三 5 12 15:24:42 2010

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 

达到提交点 - 逻辑记录计数 1

达到提交点 - 逻辑记录计数 2

 

E:/test>

 

in.txt

韩美美,hmm,2

Mary,mm,3

 

select * from student;

SNO       NAME

1     李雷

2     韩美美

3     Mary

 

实现了数据的插入,以及字段的过滤,字段的对应顺序

 

----------

安装数据库 dbname test
安装有问题
新建数据库,sqlnet.ora中注释#SQLNET.AUTHENTICATION_SERVICES= (NTS)

tnsping test
发现是环境变量path有问题,修改

oci程序,添加include,添加lib

#if defined(WIN32)
#pragma comment(lib,"oci.lib")
#endif

8-30


------
9-1

头文件问题

text * sql = (text*)"insert into part_nos values(:description,:partno)";
obndra

ORA-01484: 数组仅可以与 PL/SQL 语句关联
processing oci function OEXEC, OEXN

-------
9-3
封装

初步实现绑定数据批量插数据到数据库

---
9-7

由于是常驻进程,注意检查数据库的连接状态,在连接断开时,可以再次连接

----
9-8
进行查询的时候,整型若为NULL,取其值则为0

-----
9-16

INSTALL_PATH = /home/gmdb/database/gmdb

使用GMDB,在makefile中调用提供的库就可以了,注意看其用法
利用客户端查看结果

可以创建索引,对索引的功效进行测试验证

9-19

GMDB的一些问题

delete的时候不需要显式的commit就可以提交,update的时候需要

直接在客户端进行rollback commit 无效
可能是设置了自动提交,把自动提交关闭

一个连接中insert可以多次执行,select就不行,报错
stmt关联conn的时候,超过一定的数量后报错
发现原因时没有释放   DB_SqlStmtFree(&stmt);
------
之前的oci程序 批量插入数据没有问题
insert into test9 nologging (ID)  values(1);
写错了
写成了 insert into test9 (ID) nologging  values(1);
sql报错

-------
9-28

看oci8里的函数,在select的时候取字段值有问题
发现是类型参数设置的问题

    char c[] = {0,0,0,1};
    cout <<*((int*)c) <
    char str[8] = {0};
    *((int*)str) = 1;// 01 00 00 00
    cout <<*((int*)str) <   
    cout <
    char* v[2];
    v[0] = new char[8];
    cout <
9-29
一个需求,从GMDB中导出数据到文件中,再导入到Oracle
如果直接在内存中进行对接实现数据传输,不IO到文件中,处理速度会快些,但是出错后再次处理会比较麻烦

---
9-30
分别实现了数据导出,数据导入功能

文件不能有空行
oci@ATAE1:~/tdb/test>
oci@ATAE1:~/tora/bin>

问题:读配置 写日志 整合  性能测试 安全性测试

--
10-8
读文件到变量中
#include
#include
#include

int main()
{
    char filename[] = "c.txt";
    char str[32] = {0};
    int a, b;

    ifstream infile(filename);
    infile >> str;
    infile >> a;
    infile >> b;
    cout <
    return 0;
}

--
10-9
修改程序,使可以插入空字段

#include
system("ls");
调用系统命令

---
10-11
在程序中调用
system("ls");

程序将顺序执行,system("ls");命令执行好了后再继续往下

mv c dat.txt
会覆盖之前的文件,如果存在的话

200机器不能通过ftp访问,但可以使用ftp访问其他的机器,可以这样mput上传文件作中转

----
程序参数
#include

int main(int argc, char** argv)
{
    cout <    cout <   
    return 0;
}

oci@ATAE1:~/tdb/test> ./targc 11 22
3
./targc 11
oci@ATAE1:~/tdb/test>


-------
10-12

导入数据到表时,为了保证导入数据的可靠性,需要使用一个配置文件进行标识

--
GMDB客户端程序测试,把include lib so 文件加入 ,还要加入so路径到环境变量中

xby@BI01:~/sunyu/src/gmdb> cat env
export

LD_LIBRARY_PATH=/opt/mqm/lib64:/home/xby/lib:/opt/ODBC/lib::/home/oracle/oracle/app/oracle/product/11.1.0/db_1/lib:/

home/xby/sunyu/src/database/gmdb/lib::/home/xby/sunyu/src/database/gmdb/so

执行
. ./env

---
10-13

启动机器上的ftp服务
1。查看是否安装了vsFTPd软件
  [root@linuxsir001   root]#   rpm   -qa   |   grep   vsftpd
  如果没有任何显示,说明没有把vsFTPd安装上,如果出现的是下面的这样的提示,就证明已经安装上了。
  
  [root@linuxsir001   root]#   rpm   -qa   |   grep   vsftpd
  vsftpd-1.1.3-8
  
  我以Redhat   9.0,以其自带的vsFTPd包vsftpd-1.1.3-8版本来为本帖约定。
  
  [root@linuxsir001   root]#   rpm   -ivh   vsftpd*.rpm  
  
  2。打开vsFTPd服务器。
  
  [root@linuxsir001   root]#   ntsysv
  
  把vsftpd服务器打开,也就是在运行
上网机(上网机) 10:26:01
   ntsysv命令后,把vsftpd服务选中。
  
  

  •    vsftpd  
      
      3。运行/etc/init.d/vsftpd   start
      
      [root@linuxsir001   root]#   /etc/init.d/vsftpd   start
      为   vsftpd   启动   vsftpd:   [   确定   ]
      [root@linuxsir001   root]#

    再编译程序,执行,就可以了


    1.修改/etc/vsftpd.conf将里面的write_enable=yes,anonymous_enable=yes,local_login=yes.

      2./etc/inetd.conf将里面关于ftp的两行的注释去掉。

      3.将/etc/ftpusers中不能出现将来要登录的帐户名。


    service vsftpd start

    ---------
    10-14

    oracle@bi0001:~> cd
    oracle@bi0001:~> vi .bash_profile

    LANG=c#

    ORACLE_HOME=/oracle/app/oracle/product/11.1.0/db_1; export ORACLE_HOME
    ORACLE_SID=orcl; export ORACLE_SID
    NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
    ORA_NLS33=$ORACLE_HOME/nls/data; export ORA_NLS33
    LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
    PATH=$PATH:/bin:/usr/bin:/etc
    PATH=$PATH:$ORACLE_HOME/bin
    export PATH
                         
    oracle@bi0001:~> pwd
    /opt/oracle

    --
    添加到root用户的/etc/profile 文件中
    bi0001:/etc # ls

    bi0001:/etc # vi profile
    bi0001:/etc # source profile

    ---
    查看数据库
    show parameter DB_NAME


    ---
    打包
     tar -cvf tto.tar tora
    解包
    tar -xvf tto.tar



    LD_LIBRARY_PATH=/oracle/app/oracle/product/11.1.0/db_1/lib
    LD_LIBRARY_PATH是系统设定的路径变量

    ----
    10-15

    指令名称 : chown
      使用权限 : root
      使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
      说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown
      可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)
      所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己
      的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

    chown -R 递归改变
    ----
    10-18
    ps -fau uname
    显示用户uname下的进程信息

    应该是 ps -fu uname

    在root用户下 sqlplus /  as sysdba
    没有权限
    ORA-01031: insufficient privileges

    在oracle用户下可以

    --
    关闭数据库
    SQL>shutdown immediate;
    启动
    SQL>startup

    ---
    10-19
    新创建的用户必须要这样赋权才可以连接使用
    SQL> grant connect,resource to test;

    Grant succeeded.

    ---
    export LD_LIBRARY_PATH=/usr/local/lib:/oracle/app/oracle/product/11.1.0/db_1/lib

    在数据导出大整数,小数,出现问题时,可以考虑使用to_char 转换成字符串来处理
    应该直接使用col->value->data,不作下面的转换
     sprintf(pucStr, "%f", *(double *)col->value->data);
    ----
    导入数据时
    01:02:51.22
    01:02:57.106
    6秒导入16万条数据,没有索引的情况下

    ---
    10-20
    修改程序
    //2010-10-20
        case DB_SQL_T_DECIMAL:
            sprintf(pucStr, "%s", col->value->data);
            break;

        case DB_SQL_T_DOUBLE:
            //测试时注意小数是否可以正确输出
            sprintf(pucStr, "%f", *(double *)col->value->data);
            break;

    --
    10-21
    在gdb调试程序时,set args 来设置程序输入参数



            sprintf(str, "%sde", str);
        cout <<"abc%s = " <

    对其自身进行复制,很危险
        sprintf(str, "abc%sde", str);
        cout <<"abc%s = " <
    ------
    字段对应表添加字段 字段程度 字段序号


    ---
    10-25

    oracle clob类型的使用
    在insert语句里字符串的长度有限制

  • 推荐阅读
    • Java 零基础入门:SQL Server 学习笔记(第21篇)
      Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
    • 本周,我深入研究了 ECharts 插件的使用方法,整体感觉插件操作较为简便,但后台算法较为复杂。此外,我还学习了 MySQL 函数的新应用,进一步提升了数据库操作的灵活性。同时,分享了自己在 Python 书籍外借过程中的体验,总结了一些实用的借阅技巧和心得。 ... [详细]
    • 在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ... [详细]
    • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
    • MySQL性能优化与调参指南【数据库管理】
      本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
    • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
      PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
    • 本文详细探讨了如何有效解决Oracle数据库中常见的ORA-01578和ORA-26040错误。这些错误通常与数据块损坏有关,严重影响数据库的稳定性和数据完整性。文章不仅提供了详细的故障诊断步骤,还介绍了多种修复方法,包括使用RMAN工具、手动修复数据块以及预防措施,以帮助数据库管理员高效应对这些问题。 ... [详细]
    • 利用Java开发功能完备的电话簿应用程序,支持添加、查询与删除操作
      本研究基于Java语言开发了一款功能全面的电话簿应用程序,实现了与数据库的高效连接。该应用不仅支持添加、查询和删除联系人信息,还具备输出最大和最小ID号的功能,并能够对用户输入的ID号进行有效性验证,确保数据的准确性和完整性。详细实现方法可参阅相关文档。 ... [详细]
    • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
    • Go GORM 使用过程中常见问题及解决方案
      本文详细探讨了在使用 Go 语言的 GORM 框架时遇到的常见问题及其解决方案,提供了丰富的实战经验和技巧,旨在帮助开发者高效解决相关技术难题,具有很高的参考价值。 ... [详细]
    • Spring Boot 中 JPA 自动执行 data.sql 文件的实现机制探析 ... [详细]
    • 在尝试使用指定的数据库进行登录时,遇到了权限问题。具体表现为用户 'lzldb'@'%' 无权访问数据库 'lzldb',错误代码为 1044 (42000)。命令行参数 `-D` 指定了数据库名称,但未能成功连接。建议检查用户的权限配置,确保其具有对目标数据库的访问权限。此外,使用密码时应谨慎处理,避免在命令行中明文显示。 ... [详细]
    • 在处理历史交易表时,发现存在部分重复交易记录,需进行数据清理。为解决此问题,考虑构建一个临时表,并采用SQL Server ODBC工具进行数据的导入与导出操作,以实现高效去重。此外,建议结合索引优化和批处理技术,进一步提升数据处理效率和系统性能。 ... [详细]
    • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
      SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
    • 在 Oracle 数据库中,`NULLS FIRST` 和 `NULLS LAST` 是 `ORDER BY` 子句中用于控制空值排序位置的关键字。当使用 `NULLS FIRST` 时,无论排序顺序是升序 (`ASC`) 还是降序 (`DESC`),包含空值的记录都会被排列在结果集的最前面。相反,`NULLS LAST` 则确保空值记录被放置在结果集的最后。这些关键字提供了灵活的排序选项,特别是在处理包含大量空值的数据集时,能够更好地满足不同的业务需求。 ... [详细]
    author-avatar
    小宋提刑官_783
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有