Exce表格网

lodop可以导出excel(用load导入数据)

来源:www.0djx.com  时间:2023-02-28 07:30   点击:100  编辑:表格网  手机版

1. 用load导入数据

两种方法可以实现。

第一,导入numpy,将文本数据导入txt文档,然后通过函数load就可以读取txt文件,就可以导入文本数据了。

第二,导入pandas包,将文本文件等距插入excel表,然后通过read_txt来读取excel文件,这样也可以导入文本数据。

2. load导入数据到hive

inceptor改字节串长度就是要在导入函数之前对文件作出修改。

最近遇到一个导数需求,需要把inceptor中的数据按照每个字段定长(指定字节数)导出成文本文件。思路如下:1)到处inceptor表到hdfs,这个过程,主要处理字段长度,补位,去小数点,规范行分隔符和切分文件2)取hdfs文件到本地,这个过程,主要处理文件名称的规范化,增加首行字段名,及获取记录数样例脚本

#!/bin/sh

#说明#1)脚本需要在能执行beeline和hadoop命令的机器上执行#2)部分用户执行beeline和hadoop命令时可能会找不到命令,请配置好环境变量,或者使用命令的绝对路径

导出数据到hdfs##执行脚本前提前建好导出数据的中间表#–如果需要指定换行(\n) 、回车(\r)为分隔符,则建表语句如下。这里注意,windows的行分隔符是 \r\n , linux 下默认是\n#create table test(aa string);#ROW FORMAT DELIMITED#LINES TERMINATED BY ‘\r\n’;

#连接inceptor

v_conn_ipt=“beeline -u jdbc:hive2://tdh4:10000/tpcds_orc_2”#指定导出的文件个数v_file_num=“set mapred.reduce.tasks=5;”

##每次执行前需要清空临时表v_clean_table=“truncate table test;”

#导出数据sql##注意,使用shell脚本封装时,这里是 四个反斜杠 ‘\\’ ,直接在inceptor 里直接执行这里只需要两个反斜杠 ‘\’v_load_string=“insert into testselect lpad(s_store_sk,5,‘0’)||-- 数字左补0,右对齐rpad(s_store_name,8,’ ‘)|| – 字符右补空格,左对齐regexp_replace(to_char(trunc(s_tax_precentage,2),‘0.00’),’\\.’,’’) as aa --数值型,去掉小数点,trunc直接截取合适的小数,to_char 格式化,replace去掉小数点from store distribute by rand();”

##执行导出语句把需要导出的文件写到hdfs

${v_conn_ipt} -e “${v_file_num} ${v_clean_table} ${v_load_string}”

数据导出到本地并添加表头行数等信息#文件导出路径v_file_path="/inceptorsql1/user/hive/warehouse/tpcds_orc_2.db/hive/test"v_files=hadoop fs -ls ${v_file_path}|awk '{ print $8 }'#文件导出的本地路径v_target_path=/root/xwz/

j=0for i in $v_filesdoecho ${i}#根据接口规范定义文件名,逻辑自行补充v_new_file_name=“xxx_xxx_${j}.TXT”echo “${v_new_file_name}”#把字段名写入文件第一行echo “s_store_sk|s_store_name|s_tax_precentage”>${v_target_path}${v_new_file_name}#导出hdfs文件到本地hadoop fs -cat ${i}>>${v_new_file_name}#如果需要获取每个文件的记录数使用如下命令v_count=hadoop fs -cat ${i}|wc -lecho “文件${v_new_file_name}的记录数为:${v_count}”j=expr ${j} + 1

done

遇到的问题中文及rapd 补位问题

在inceptor中,rpad 计算的是字符数,不是字节数,而Oracle的rpad是计算的字节数。此时当出现中文时,Oracle会把一个中文当两个字节算 rpad(f1,12,’ ‘) 当f1为 “中国”Oracle会在后面补充8个空格,字节数为12。inceptor会把一个中文当两个字节算 rpad(f1,12,’ ‘) 当f1为 “中国” f1,算两个字符,Oracle会在后面补充10个空格,此时实际字节数就超过了12了。处理方式因为inceptor一个中文字符是3或4个字节,使用rpad按字符个数补的话,只会多补,不会少,使用substrb 函数对 inceptor 中rpad多补的字节数直接截断,substrb函数是切割指定的字节长度比如对中文字段f1要指定定长12字节,可以使用 substrb(rpad(f1,12,’ '),1,12)

3. load导入数据为什么只导入1条

Python导入数据有三种方法。方法一:通过标准的Python库导入CSV文件。

Python提供了一个标准的类库CSV文件。这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型。

方法二:通过NumPy导入CSV文件。

也可以使用NumPy的loadtxt()函数导入数据。使用这个函数处理的数据没有文件头,并且所有的数据结构都是一样的,也就是说,数据类型是一样的。

方法三:通过Pandas导入CSV文件。

通过Pandas来导入CSV文件要使用pandas.read_csv()函数。这个函数的返回值是DataFrame,可以很方便的进行下一步的处理,实际操作过程中推荐使用这种方法。

4. load导入数据到mysql语句

数据太大,用数据库客户端软件直接导入非常卡,还是直接执行SQL吧。

1、指定文件路径。

2、字段之间以逗号分隔,数据行之间以\r\n分隔(我这里文件是以\n分隔的)。

3、字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。 Sql代码 复制代码 代码如下:load data infile 'D:\\top-1m.csv' into table `site` fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n'; 顺带也备份个导出吧。 Sql代码 复制代码 代码如下:select * from `site` into outfile 'D:\\top-1m.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n';

5. load命令导入数据

一般把从Excel导入数据到stata是先把Excel数据存成csv格式,然后运行命令insheet using d:\1.csv直接的把Excel格式数据导入到Stata的方法是:odbc load,dsn("文件类型;DBQ=文件的路径和名称") table("excel里面工作表的名称$")odbc load,dsn("Excel Files;DBQ=d:\data\data.xls") table("sheet1$")

6. 用load导入数据出现???

一般把从Excel导入数据到stata是先把Excel数据存成CSv格式,然后运行命令

insheet using d:\1.CSv

直接的把Excel格式数据导入到Stata的方法是:

odbc load,dsn("文件类型;DBQ=文件的路径和名称") table("Excel里面工作表的名称$")

odbc load,dsn("Excel Files;DBQ=d:\data\data.xls") table("sheet1$")

7. load导入数据如何将字符串转化为date

一、save与load函数保存和加载程序数据

基本格式为:

save('FILENAME', 'VARIABLES')

load('FILENAME', 'VARIABLES')

例如,save ('datas.mat','data','x','y','z'); 表示将内存变量data, x, y, z 保存到当前路径下的datas.mat文件,其它程序若要载入这几个变量的数据,只需前面路径下执行load datas;即可。

二、txt文件的导入导出

1. 导入格式一致的数据

例1 现有txt文件如下:

代码:

x1=load('data1.txt'); %注意设置当前路径为文件所在路径

x2=load('data2.txt');

2. 导入有固定分隔符的数据

dlmread('FILENAME', '分隔符', '读取范围')

例2读取txt文件如下(需要跳过前2行的非数据行,或列数不同):

代码:

x3=dlmread('data3.txt', ',', 2,0) ; %设定读取的初始位置:2行0列之后的数据

x4=dlmread('data4.txt'); %列数不足用0不齐,load函数读取将报错

3. 将矩阵数据写入指定分隔符的ASCII格式文件

dlmwrite(‘文件名’, ‘数据’, ‘分隔符’, ‘起始行’, ‘起始列’)

dlmwrite(‘文件名’, ‘数据’, '-append')

'-append'表示将矩阵数据写到文本末尾,若不指定将覆盖原文本数据。

4. 导入带表头的txt或excel数据

importdata(‘文件名’, ‘分隔符’, ‘n’);

将数据存入“结构体”,其中,n表示n行表头;也可以用来读入图片:

x=importdata('tupian.jpg'); image(x);

例3 读入如下的txt文件:

代码:

x5=importdata('data5.txt',' ',1); %空格分隔, 第1行是表头

x5.data %数据

x5.textdata %表头变量

5. 导入混合格式文本

textscan(fid, 'format', N, 'param', value);

其中,fid为文件句柄;format为读取格式;N表示用该格式读取N次数据;'param', value(可选项)指定分隔符和值对。

注意:使用textscan之前,必须先用fopen打开要读入的文件;函数textread用法类似。

例4 混合格式数据的txt文件如下:

代码:

fid=fopen('data6.txt','r'); %打开文件句柄

C=textscan(fid, '%s%s%f32%d8%u%f%f%s%f'); %按格式读入元胞数组C

fclose(fid); %关闭文件句柄

C{1}

C{9}

[names,types,y,answer]=textread('data7.txt','%9c %6s %*f %2d %3s', 1) %读入固定格式的文件的第一行,忽略其中的浮点值

运行结果:C{1} = 'Sally' 'Joe' 'Bill'

C{9} = 5.1000 + 3.0000i 2.2000 - 0.5000i 3.1000 + 0.1000i

names = Sally Lev

types = 'el1'

y = 45

answer = 'Yes'

三、csv文件导入与导出

csv文件是逗号分隔的txt文件,使用csvread()函数,有3种格式:

csvread('filename', row, col, range)

其中,第一个参数指定文件名;

row和col指定开始读取位置的行号和列号。注意是从0开始计数,即row=0, col=0表示从文件中第一个数(1, 1)开始读;

range指定读取的范围,range=[R1 C1 R2 C2],表示读取区域的左上角位置为(R1+1, C1+1),读取区域的右下角位置为(R2-1, C2-1),且要求row, col等于R1, C1.

注意:csv文件中的空项,读到矩阵中时,会初始化为0.

四、 Excel文件的导入与导出

1. 导入Excel数据文件

[num, txt, raw] = xlsread('文件名.xls','工作表', '数据范围')

例5 现有data1.xlsx文件(导入Sheet1的A1至H4数据):

代码:

[num,txt,raw]=xlsread('data1.xlsx','Sheet1','A1:H4')

%数据返回num;文本返回txt;不处理直接作为元胞返回raw

运行结果:

num =

1 60101 6010101 NaN 0 63 63

2 60101 6010102 NaN 0 73 73

3 60101 6010103 NaN 0 0 0

txt =

'序号' '班名' '学号' '姓名' '平时成绩' '期末成绩' '总成绩' '备注'

'' '' '' '陈亮' '' '' '' ''

'' '' '' '李旭' '' '' '' ''

'' '' '' '刘鹏飞' '' '' '' '缺考'

raw =

'序号' '班名' '学号' '姓名' '平时成绩' '期末成绩' '总成绩' '备注'

[ 1] [60101] [6010101] '陈亮' [ 0] [ 63] [ 63] [ NaN]

[ 2] [60101] [6010102] '李旭' [ 0] [ 73] [ 73] [ NaN]

[ 3] [60101] [6010103] '刘鹏飞' [ 0] [ 0] [ 0] '缺考'

2. 将数据导出到Excel文件

status = xlswrite(‘filename.xls’, ‘数据’, ‘工作表’, ‘指定区域’)

成功返回1,失败返回0.

例6 将矩阵或元胞数组的数据写成xls文件

代码:

A=[12.7 5.02 -98 12; 63.9 0 -0.2 56];

xlswrite('testdata.xls', A)

d={'Time', 'Temp'; 12 98; 13 99; 14 97};

s=xlswrite('tempdata.xls', d, 'Temperatures', 'E1')

%将数据d写入文件tempdata.xls, Temperatures表,E1起始

例7 读取数据、处理日期数据,根据日期绘制开盘价变化趋势图形。ExpData.xlsx文件如下(部分):

代码:

[num,txt]=xlsread('ExpData.xlsx');

%读取excel表格中的数据,数值存入num,文本存入txt

date=txt(2:end,1); %取出日期数据单独处理

t=datenum(date); %将日期转化为数值(方便绘图使用)

date1=datestr(t); %将数值转化为日期

h=figure %生成空的图形窗口句柄

set(h,'color','w'); %将图的背景颜色设为白色

plot(t,num(:,1)); %以日期为横坐标,开盘价为纵坐标,绘制图形

%plot(t,num(:,1),'*'); %绘制散点图

datetick('x',23); %将x轴标注变成日期格式:mm/dd/yyyy

xlabel('日期');

ylabel('开盘价');

运行结果:

8. load导入数据显示文件已损坏

  数字电视机顶盒只出现LOAD是表示机顶盒正在加载中,一般是开机时出现的画面,用户只需要耐心等待机顶盒加载完成就可以观看电视节目了。  如果一直停留在加载的画面,则可能存在以下原因:

1、机顶盒的系统/固件问题导致开机死机了,一般可以将机顶盒断电、关机,然后再接通电源开机即可恢复正常。

2、如果重新开机多次仍卡在加载画面不动,则可能是机顶盒的固件损坏了,需要联系售后服务刷入新固件才能解决。

3、也可能是机顶盒的硬件故障导致的,比如内部电路故障、主板芯片及其他零部件故障等,同样需要联系机顶盒的售后服务进行检测和维修才能解决。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片