pgsql数据导入hana方案
<hr />
<ul>
<li>
<p>第一步:生成hana的sql建表语句</p>
<p>1.使用[powerDesinger](<a href="https://www.showdoc.cc/1689634?page_id=15689922">https://www.showdoc.cc/1689634?page_id=15689922</a> "powerDesinger")生成hana语句
2.create table改为create column table
3.varchar类型字段的数据有中文,改为nvarchar类型
4.表名前面的schema改为相应的名称
5.自增长(ID INTEGER GENERATED BY DEFAULT AS IDENTITY)
6.now()改为CURRENT_TIMESTAMP
7.current_user()改为CURRENT_USER
8.默认值(default)后面的::char(::integer...)等删除掉</p>
</li>
<li>
<p>第二步:导出pgsql数据文件(header表示导出的数据文件第一行有表的列名)</p>
<pre><code>COPY (select * from colortbl) to 'E:/PostgreSQL2/data/colortbl.csv' with csv header ENCODING 'utf8';</code></pre>
<p>备注:'E:/PostgreSQL2/data/colortbl.csv'表示数据库所在服务器的路径(自定义导出文件的路径)</p>
</li>
</ul>
<hr />
<ul>
<li>
<p>第三步转义文件</p>
<p>linux命令</p>
<pre><code>sed 's/\\/\\\\/g' g_boxscaner.csv &gt; new_g_boxscaner.csv</code></pre>
<p>备注:此步骤一般可省略,当部分数据导入失败时,可尝试使用此步骤解决问题</p>
</li>
</ul>
<hr />
<ul>
<li>
<p>第三步导入hana</p>
<p>注意:要先设置导入权限,否则不能导入</p>
</li>
</ul>
<pre><code>
truncate table table_name;//删除表数据
import from csv file '/hana/back/file_name.csv'
into table_name
with
-- skip first 1 row
-- COLUMN LIST IN FIRST ROW
-- COLUMN LIST(&quot;SHOPID&quot;,&quot;SHOPNAME&quot;)
record delimited by '\r\n'
field delimited by ','
error log '/hana/back/file_name.bad'</code></pre>
<p>备注:</p>
<ol>
<li>
<p>'/hana/back/file_name.csv'表示第一步copy出来的数据文件路径,如果此文件不 在hana所在的服务器上,须要该文件上传到hana服务器上。</p>
</li>
<li>
<p>table_name表名,所要导入数据的表</p>
</li>
<li>skip first 1 row 跳过第一行,如果生成的数据文件第一行是表的列名,可以跳过第一行导入
注意:record delimited by '\r\n'需要改为record delimited by '\n'</li>
<li>
<p>COLUMN LIST IN FIRST ROW 把第一行当做列名,按列名导入数据,这时不需要skip first 1 row
注意:第一行的大小写要与hana相应表的列名的大小写一致,否则导入不成功,也需要把record delimited by '\r\n'改为record delimited by '\n'</p>
</li>
<li>
<p>COLUMN LIST("SHOPID","SHOPNAME")只导入某几列的数据,要求第一步导出的数据文件也是这几列的数据</p>
</li>
<li>
<p>record delimited by '\r\n'换行格式</p>
</li>
<li>
<p>field delimited by ',' 分隔符(每个字段的数据之间的分隔符)</p>
</li>
<li>error log '/hana/back/file_name.bad' 错误日志生成的路径(每张表的错误日志文件名不要一样),当导入完成一张表时,需要查看是否有相应的错误日志生成,没有则导入成功,有则导入失败,打开错误日志文件查看原因进行解决,为了进一步确认导入数据的准确性,可在原表和hana表分别count数据的行数。
注意:生成错误日志的文件夹需要设置写的权限,否则无法生成错误日志文件,当不断尝试导入数据时,需要先将相应的错误日志文件删掉</li>
</ol>