首页 > 解决方案 > 在 sqlplus 中假脱机时截断行和列

问题描述

*我正在使用 sqlplus 将 oracle 数据库中的一些数据假脱机到 CSV 文件,我的结果表有 44 列和 7000 多行,但是当它假脱机到 csv 时,它在 excel 中仅显示 26 列(索引 A 到 Z)也有些行是截断。我希望所有列都应该打印在一行中。我试过增加'linesize',但最大值是32767,所以它也不起作用我也试过'wrap on',但第26(Excel中的Z)索引之后的列在下一行。

SET echo off
set embedded on
SET linesize 32767
SET LONG 90000 
SET LONGCHUNKSIZE 90000 
SET wrap off
SET heading off
SET pagesize 1000;
SET feed off;
SET colsep ',' 
SET termout off;
set trimout on;
SET trimspool ON; 
SELECT * FROM ix_web_user;
spool results.csv append;
SET newpage none;
/
spool off

我希望所有列都应打印在一行中,并且行不应被截断。*

标签: oracleoracle11gexport-to-csvsqlplusspool

解决方案


您可以导出多个具有不同列的 csv 文件,但每个文件中的一列必须是唯一的行标识符。例如,第一个文件包含 22 列,第二个文件包含 23 列。一个简单的脚本通过标识符连接行,结果是一个包含 44 列和超过 32768 行长度的最终文件。

文件 1.csv

id,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28,col29,col30,col31,col32,col33,col34,col35,col36,col37,col38,col39,col40,col41,col42,col43
joe,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2411111111111111111111111111111111111111111111111111111111111
sam,21,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,451111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
mary,31,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

文件2.csv

id,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,col21
joe,33311111111111111111111111111111111111111111111111111111111111111111111111111111111111,33311111111111111111111111111111111111111111111111111111111111111111111111111111111111
mary,5551111111111111111111111111111111111111111111111111111111111111111111111111111111111,5551111111111111111111111111111111111111111111111111111111111111111111111111111111111
sam,44411111111111111111111111111111111111111111111111111111111111111111111111111111111111,44411111111111111111111111111111111111111111111111111111111111111111111111111111111111

文件合并.ps1

$file1=(import-csv file1.csv -header id,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,
                                     col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,
                                     col21,col22,col23,col24,col25,col26,col27,col28,col29,col30,
                                     col31,col32,col33,col34,col35,col36,col37,col38,col39,col40,
                                     col41,col42,col43)[1..9999]
$file2=(import-csv file2.csv -header id,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,
                                     col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,
                                     col21)[1..9999]
$file1|
   %{
      $id=$_.id
      $m=$file2|?{$_.id -eq $id}
      $_.col23=$m.col1
      $_.col24=$m.col2
      $_.col25=$m.col3
      $_.col26=$m.col4
      $_.col27=$m.col5
      $_.col28=$m.col6
      $_.col29=$m.col7
      $_.col30=$m.col8
      $_.col31=$m.col9
      $_.col32=$m.col10
      $_.col33=$m.col11
      $_.col34=$m.col12
      $_.col35=$m.col13
      $_.col36=$m.col14
      $_.col37=$m.col15
      $_.col38=$m.col16
      $_.col39=$m.col17
      $_.col40=$m.col18
      $_.col41=$m.col19
      $_.col42=$m.col20
      $_.col43=$m.col21

    }
$file1|Export-Csv "file3.csv" -NoTypeInformation

输出文件3.csv

"id","col1","col2","col3","col4","col5","col6","col7","col8","col9","col10","col11","col12","col13","col14","col15","col16","col17","col18","col19","col20","col21","col22","col23","col24","col25","col26","col27","col28","col29","col30","col31","col32","col33","col34","col35","col36","col37","col38","col39","col40","col41","col42","col43"
"joe","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","2411111111111111111111111111111111111111111111111111111111111",,"33311111111111111111111111111111111111111111111111111111111111111111111111111111111111","33311111111111111111111111111111111111111111111111111111111111111111111111111111111111",,,,,,,,,,,,,,,,,,,
"sam","21","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","451111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",,"44411111111111111111111111111111111111111111111111111111111111111111111111111111111111","44411111111111111111111111111111111111111111111111111111111111111111111111111111111111",,,,,,,,,,,,,,,,,,,
"mary","31","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","30111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",,"5551111111111111111111111111111111111111111111111111111111111111111111111111111111111","5551111111111111111111111111111111111111111111111111111111111111111111111111111111111",,,,,,,,,,,,,,,,,,,

推荐阅读