PGLOADER错误sqlite3.dll但我没有使用sqlite

时间:2015-01-24 21:26:46

标签: postgresql

我正在尝试在Windows上使用pgloader for Postgresql,从http://pgloader.io/下载。

我尝试使用pgloader而不是COPY的原因是我想从分隔文件导入,其中包含要插入的源文件中的列的子集(而不是全部),在某些情况下,转换来自基于源格式插入日期的字符串(或一般的一种数据类型)。

我无法让pgloader工作,更不用说做我想做的事了。我开始试图让一个简单的加载工作。

我在Windows上运行postgresql 9.3.

我在fish架构中创建了一个名为public的测试表,数据库名为test

create table fish (
    fish_id    int,
    fish_descr varchar(20)
);

在我的计算机上,我有一个名为more_fish.txt的文件,有两行:

2|Sooodles
3|Poodles

(以管道分隔)。

我想将这两行插入fish表。

运行以下COPY按预期工作并插入2行:

copy fish FROM 'C:\Users\ShWiVeL\Desktop\more_fish.txt' delimiter '|';

为了确保在插入格式转换之前我已经掌握了pgloader的基础知识,我试图让上面的示例使用pgloader工作。

我在命令行中运行以下命令(我正在使用Windows):

cd C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin
pgloader commands.load

commands.load文件位于该bin文件夹(以及pgloader.exe)中,并包含以下内容:

LOAD CSV  
   FROM 'C:\Users\ShWiVeL\Desktop\more_fish.txt' WITH ENCODING iso-646-us  
        HAVING FIELDS  
        (  
           fish_id, fish_descr
        )  
   INTO postgresql://postgres@localhost:5432/test?fish
        TARGET COLUMNS
        (  
           fish_id, fish_descr
        )  
   WITH truncate,  
        skip header = 0,  
        fields terminated by '|'

    SET work_mem to '32 MB', maintenance_work_mem to '64 MB';

以上使用pgloader文档中的一个示例,只是为了我认为简单的测试而进行了修改。

我收到以下错误:

C:\Users\ShWiVeL\Desktop>cd C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin

C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin>pgloader commands.load

debugger invoked on a SIMPLE-ERROR in thread
#<THREAD "main thread" RUNNING {26922DB9}>:
  Error opening shared object "sqlite3.dll":
 The specified module could not be found.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE       ] Skip this shared object and continue.
  1: [RETRY          ] Retry loading this shared object.
  2: [CHANGE-PATHNAME] Specify a different pathname to load the shared object from.
0

(SB-SYS:DLOPEN-OR-LOSE #S(SB-ALIEN::SHARED-OBJECT :PATHNAME #P"sqlite3.dll" :NAMESTRING "sqlite3.dll" :HANDLE NIL :DONT-SAVE NIL))
0]

我不明白我为什么会收到错误:sqlite。我没有以任何方式指定它作为源数据库。

有没有人知道如何使用pgloader执行这个非常基本的COPY :(或者为什么我在运行上面时遇到上述错误)

copy fish FROM 'C:\Users\ShWiVeL\Desktop\more_fish.txt' delimiter '|';

用户:postgres 端口:默认为5432 数据库名称:test 表名:鱼 架构:公共

根据评论进行修改

正在运行pgloader --verbose commands.load没有任何影响。

我尝试将sqlite3.dll放入bin文件夹,结果更改为:

C:\Users\ShWiVeL\Desktop>cd C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin

C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin>pgloader --verbose commands.load

debugger invoked on a SIMPLE-ERROR in thread
#<THREAD "main thread" RUNNING {26922DB9}>:
  Error opening shared object "libeay32.dll":
 %1 is not a valid Win32 application.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE       ] Skip this shared object and continue.
  1: [RETRY          ] Retry loading this shared object.
  2: [CHANGE-PATHNAME] Specify a different pathname to load the shared object from.
0

(SB-SYS:DLOPEN-OR-LOSE #S(SB-ALIEN::SHARED-OBJECT :PATHNAME #P"libeay32.dll" :NAMESTRING "libeay32.dll" :HANDLE NIL :DONT-SAVE NIL))
0]

尝试从https://openvpn.net/release/openssl/下载libeay32.dll并将其放入bin文件夹,结果更改为:

enter image description here     C:\ Users \ ShWiVeL \ Desktop&gt; cd C:\ Users \ ShWiVeL \ Desktop \ postgresql \ postgresql \ PostgreSQLPortable \ App \ PgSQL \ bin

C:\Users\ShWiVeL\Desktop\postgresql\postgresql\PostgreSQLPortable\App\PgSQL\bin>pgloader --verbose commands.load

debugger invoked on a SIMPLE-ERROR in thread
#<THREAD "main thread" RUNNING {26922DB9}>:
  Problem running initialization hook #<FUNCTION (LAMBDA ()
                                                   :IN
                                                   "//vboxsrv/vagrant/src/hooks.lisp")
                                        {2275BA15}>:
  Unable to load foreign library (LIBSSL).
  Error opening shared object "libssl32.dll":
 The specified procedure could not be found.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE] Skip this initialization hook.
0

(SB-INT:CALL-HOOKS "initialization" (#<FUNCTION (LAMBDA NIL :IN "//vboxsrv/vagrant/src/hooks.lisp") {2275BA15}> SB-BSD-SOCKETS-INTERNAL::CALL-WSA-STARTUP SB-WIN32::INITIALIZE-CONSOLE-CONTROL-HANDLER) :ON-ERROR :ERROR)
0]

libssl32.dll已经存在于bin文件夹中)

0 个答案:

没有答案