【问题标题】:How to use Sybase LOAD TABLE correctly?如何正确使用 Sybase LOAD TABLE?
【发布时间】:2016-07-12 20:13:27
【问题描述】:

我一直在使用 ISQL (SQLAnywhere 12) 将数据从 CSV 导入到使用 INPUT INTO 的现有表中,并且从未遇到过问题。今天我需要将数据导入到包含自动增量列的表中,但是,我认为我只需将该列留空,因此我尝试使用仅包含 1 行数据的文件(为了安全起见)。结果它在自动增量字段中使用 0 而不是下一个整数值导入。

查看Sybase documentation,似乎我应该改用 LOAD TABLE,但示例看起来有点复杂。

我的问题如下...

  • 文档说 CSV 文件需要位于数据库服务器而不是客户端上。我无权访问数据库服务器本身 - 我可以从 ISQL 中远程加载文件吗?
  • 如何定义要加载的表的列?如果我只将数据加载到几列中而将其余列保留为 NULL,该怎么办?
  • 确认一下,这将使表中的现有数据保持原样,并使用 CSV 中的任何内容简单地添加到其中?

非常感谢。

【问题讨论】:

    标签: sybase sqlanywhere sybase-asa


    【解决方案1】:
    1. 是的。查看online documentationLOAD TABLE - 您可以使用USING CLIENT FILE 子句。

    2. 您可以在表名后面的括号中指定列名,即LOAD TABLE mytable (col1, col2, col3) USING CLIENT FILE 'mylocalfile.txt'。如果列可以为空,则此处未列出的任何列都将设置为 NULL,如果不是,则将其设置为空字符串 - 这就是您的自动增量列设置为 0 的原因。您可以使用 DEFAULTS ON 子句来获得您想要的.

    3. 是的,表中的现有数据不受影响。

    【讨论】:

    • 非常感谢。一个后续问题 - 在文档中,一些示例在列列表中使用了填充器()。那有什么作用?
    • 当您有一个 csv 文件的数据列多于您想要导入的数据时使用它。假设您有一个包含 4 列的文件,但您不需要第三列。您可以使用LOAD TABLE mytable (col1, col2, filler(), col4) ... 跳过第三列。
    • 知道了。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多