1.怎么新建一个ctl文件,用txt另存为找不到ctl文件格式的选项
@echo offset rq=%date:~,10%set rq=%rq:-=%set fn=infile.ctlrem set fn=%rq%.ctl(echo LOAD DATA echo CHARACTERSET AL32UTF8echo INFILE '%rq%.txt' echo BADFILE '%rq%.bad'echo DISCARDFILE '%rq%.dsc'echo INTO TABLE "%rq%"echo APPENDecho FIELDS TERMINATED BY '^|'echo ^( ^))>%fn% 如果控制文件名也按日期写的话,把第5行的rem去掉即可。
2.sqlloader 的CTL 文件里 filter怎么写
sqlldr userid=lgone/tiger control=a.ctl LOAD DATA INFILE 't.dat' // 要导入的文件 // INFILE 'tt.date' // 导入多个文件 // INFILE * // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容 INTO TABLE table_name // 指定装入的表 BADFILE 'c:\bad.txt' // 指定坏文件地址 ************* 以下是4种装入表的方式 APPEND // 原先的表有数据 就加在后面 // INSERT // 装载空表 如果原先的表有数据 sqlloader会停止 默认值 // REPLACE // 原先的表有数据 原先的数据会全部删除 // TRUNCATE // 指定的内容和replace的相同 会用truncate语句删除现存数据 ************* 指定的TERMINATED可以在表的开头 也可在表的内部字段部分 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' // 装载这种数据: 10,lg,"""lg""","lg,lg" // 在表中结果: 10 lg "lg" lg,lg // TERMINATED BY X '09' // 以十六进制格式 '09' 表示的 // TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空 ************* 下面是表的字段 ( col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载 // 如: lg,lg,not 结果 lg lg ) // 当没声明FIELDS TERMINATED BY ',' 时 // ( // col_1 [interger external] TERMINATED BY ',' , // col_2 [date "dd-mon-yyy"] TERMINATED BY ',' , // col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg' // ) // 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据 // ( // col_1 position(1:2), // col_2 position(3:10), // col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置 // col_4 position(1:16), // col_5 position(3:10) char(8) // 指定字段的类型 // ) BEGINDATA // 对应开始的 INFILE * 要导入的内容就在control文件里 10,Sql,what 20,lg,show ===================================================================================== //////////// 注意begindata后的数值前面不能有空格 1 ***** 普通装载 LOAD DATA INFILE * INTO TABLE DEPT REPLACE FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (DEPTNO, DNAME, LOC ) BEGINDATA 10,Sales,"""USA""" 20,Accounting,"Virginia,USA" 30,Consulting,Virginia 40,Finance,Virginia 50,"Finance","",Virginia // loc 列将为空 60,"Finance",,Virginia // loc 列将为空 2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情况 LOAD DATA INFILE * INTO TABLE DEPT REPLACE FIELDS TERMINATED BY WHITESPACE -- FIELDS TERMINATED BY x'09' (DEPTNO, DNAME, LOC ) BEGINDATA 10 Sales Virginia 3 ***** 指定不装载那一列 LOAD DATA INFILE * INTO TABLE DEPT REPLACE FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ( DEPTNO, FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 将不会被装载 DNAME, LOC ) BEGINDATA 20,Something Not To Be Loaded,Accounting,"Virginia,USA" 4 ***** position的列子 LOAD DATA INFILE * INTO TABLE DEPT REPLACE ( DEPTNO position(1:2), DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置 LOC position(*:29), ENTIRE_LINE position(1:29) ) BEGINDATA 10Accounting Virginia,USA 5 ***** 使用函数 日期的一种表达 TRAILING NULLCOLS的使用 LOAD DATA INFILE * INTO TABLE DEPT REPLACE FIELDS TERMINATED BY ',' TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应 // 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了 (DEPTNO, DNAME "upper(:dname)", // 使用函数 LOC "upper(:loc)", LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等 ENTIRE_LINE ":deptno:dname:loc:last_updated" ) BEGINDATA 10,Sales,Virginia,1/5/2000 20,Accounting,Virginia,21/6/1999 30,Consulting,Virginia,5/1/2000 40,Finance,Virginia,15/3/2001 6 ***** 使用自定义的函数 // 解决的时间问题 create or replace function my_to_date( p_string in varchar2 ) return date as type fmtArray is table of varchar2(25); 看看参考下。
3.oracle使用sqlldr导入csv文件,如何写ctl命令,使我从csv中选择字个别
1,新建文件test.ctl 将下面的内容复制到文件中
----------------------
Load data
Infile 'F:\BI\017 端到端报表\SQLLDR数据导入\test.csv' --数据源文件名称
Append --append在表后追加,insert插入空表,replace替代原有内容
Into table ctl.test --要导入的数据库表名称
--[when id = id_memo] --过滤条件
Fields terminated by ',' --字段分隔符
(a1,a2,a3,a4,a5) --字段名称列表
4.关于shell怎么编写运行.ctl文件的语句
在shell中使用sqldr
usr_pwd="";
datapath1="/home/data/${datestr}";
badpath="/home/data/bad";
logpath="/home/data/log";
controlpath="/home/data/ctl";
sqlldr $usr_pwd control=$controlpath/user.ctl data=$datapath1/${datestr}-user.txt log=$logpath/${datestr}-user.log bad=$badpath/${datestr}-user.bad skip=0;
5.如何用fortran或dos命令将ctl文件(文档文件)中的相对路径批量改为
代码是认为文件名与文件里第一行的一部分是相同的,请先备份测试:
@echo off
cd/d "e:\2"
echo 正在处理。
for %%i in (*.ctl) do (
echo %%i
(echo DSET %cd%\%%~ni.dat
move +1 "%%i")>%%i.$)
del /q *.ctl
ren *.$ *.
pause
6.怎么用grads处理grib格式文件
给你一个小程序,是用perl写的,然后funny转成了exe文件,你可以用它生成ctl,但生成的ctl文件还需要自己去掉这个程序强制添加上去的一些信息,然后,你用gribmap.exe生成index文件,就可以显示了。
这个zip包里有原始的perl程序,转好的exe文件和 gribmap.exe三个文件。 C:\drawing\ncep-monthly\ex>grib2ctl -i prs.grib.mean.y1980>y1980.ctl Using NCEP reanalysis table, see -ncep_opn, -ncep_rean options Using NCEP reanalysis table, see -ncep_opn, -ncep_rean options C:\drawing\ncep-monthly\ex>gribmap -i y1980.ctl Open Error: Unknown keyword in description file --> The invalid description file record is: --> this exe file was created with the evaluation version of perl2exe. The data file was not opened. File name is: y1980.ctl "Using NCEP reanalysis table, see -ncep_opn, -ncep_rean options" 就是说你应该用 -ncep_opn 或 -ncep_rean 的选项,具体看帮助 下面就不用说了,ctl都没有形成,自然不行的了 Hi,funny Thanks! 错误与“ -ncep_opn, -ncep_rean options”无关,是ctl中endvars后“--> this exe file was created with the evaluation version of perl2exe.”的这句话作怪,删掉后可正常得到idx。
========= D:\PCGrADS\win32>grib2ctl E:\。
\air2m.mon.mean.nc >air2m.ctl 显示的信息如下: Big problem: #either e:\ncep\nc\air2m.mon.mean.nc is missing or not a grib file or wgrib is not on your path 可这个人家告诉我确实是格点文件啊 ================ 这个文件是格点文件,但不是grib码文件,直接用sdfopen 文件名就可以了。
#我在DOS里面用命令C:\Program Files\PCGrADS\win32>grib2ctl.exe grib_file 为什么不能生成grib_file.ctl?请各位前辈指点。 [这个贴子最后由tibet在 2004/06/30 04:13pm 编辑] C:\Program Files\PCGrADS\win32>grib2ctl grib_file > grib_file.ctl or gs>!grib2ctl grib_file > grib_file.ctl #请教个问题,如何形成几个时次在一个文件中的ctl 和idex 请参考grads中文手册。
ctl文件中可以设置一个参数 options template。生成一个时次的ctl之后自己编辑修改ctl。
不然,把所有时次都写一个grib文件中。 'reinit' 'sdfopen d:\zhj\slp.1948.nc' 'set lon 120 240' 'set lat 20 60' 'set lev 0' 'set t 289 366' 'set gxout fwrite' 'set fwrite d:\zhj\slp.grd' 'd slp' 'disable fwrite' ; 写成.grd文件再写一个.ctl文件就可以了 不过是不是有点麻烦 #各位前辈 我最近才接触到grads ,现在用的是.nc格式的ncep reanalysis资料 看了前面的贴子,还是有很多不太明白的,现在我用sdfopen可以打开资料 也可以画图,但是怎么能生成.ctl文件呢.希望能说的清楚一些 非常感谢 你这个是格点资料 直接用sdfopen读就可以了,nc文件自带描述文件的,不需要你编ctl。
要是你把nc 资料转化成grd格式的再画图就需要编写ctl了 ¥ D:\PCGrADS\win32e>gribmap -i hhca50.ctl Open Error: Data file type invalid --> The invalid description file record is: --> options yrev The data file was not opened. File name is: hhca50.ctl 我用girbmap命令生成idx时候,会提示这样的错误,是怎么回事啊?。
7.怎么用grads打开bin文件和dat文件
首先要用CTL文件描述文件里的数据。比如我有一个二进制数据文件h200.dat,这个文件有两个变量(u和v),经度从0到360,纬度从-90到90,高度只有一层(200mb),时间t有38个时次(开始于2010年10月14日06时),每6小时(360分钟)为一间隔。那么CTL文件的写法格式如下:
dset d:\h200.dat
title Wind of 200mb
undef -9.99e33
xdef 360 linear 0 1
ydef 181 linear -90 1
zdef 1 levels 200
tdef 38 linear 06Z14OCT2010 360mn
vars 2
u 0 99 U-Component of Wind
v 0 99 V-Component of Wind
endvars
然后再在grads中打开该CTL文件(假如路径为d:\h200.ctl),命令为“open d:\h200.ctl ”。之后就可以画图了,比如画u变量的图命令为“d u”。
关于CTL文件具体的格式,在网上可以查到。希望对你有用。