copy-from-s3-minio.td 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Tests for COPY FROM expr.
  10. # COPY FROM expressions should immediately succeed or fail on their first runs
  11. $ set-max-tries max-tries=1
  12. $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
  13. ALTER SYSTEM SET enable_copy_from_remote = true;
  14. # Prepare the table we want to COPY INTO.
  15. > CREATE TABLE t1 (a text, b text);
  16. $ s3-file-upload bucket=copytos3 key=csv/1.csv repeat=2
  17. none,100
  18. $ s3-set-presigned-url bucket=copytos3 key=csv/1.csv var-name=1_csv_url
  19. > COPY INTO t1 FROM '${1_csv_url}' (FORMAT CSV);
  20. > SELECT * FROM t1;
  21. none 100
  22. none 100
  23. # gzip Compression.
  24. $ s3-file-upload bucket=copytos3 key=csv/2.csv.gz repeat=2 compression=gzip
  25. gzip,200
  26. $ s3-set-presigned-url bucket=copytos3 key=csv/2.csv.gz var-name=2_csv_url
  27. > COPY INTO t1 FROM '${2_csv_url}' (FORMAT CSV);
  28. > SELECT * FROM t1;
  29. gzip 200
  30. gzip 200
  31. none 100
  32. none 100
  33. # bzip2 Compression.
  34. $ s3-file-upload bucket=copytos3 key=csv/3.csv.bz2 repeat=2 compression=bzip2
  35. bzip2,300
  36. $ s3-set-presigned-url bucket=copytos3 key=csv/3.csv.bz2 var-name=3_csv_url
  37. > COPY INTO t1 FROM '${3_csv_url}' (FORMAT CSV);
  38. > SELECT * FROM t1;
  39. bzip2 300
  40. bzip2 300
  41. gzip 200
  42. gzip 200
  43. none 100
  44. none 100
  45. # xz Compression.
  46. $ s3-file-upload bucket=copytos3 key=csv/4.csv.xz repeat=2 compression=xz
  47. xz,400
  48. $ s3-set-presigned-url bucket=copytos3 key=csv/4.csv.xz var-name=4_csv_url
  49. > COPY INTO t1 FROM '${4_csv_url}' (FORMAT CSV);
  50. > SELECT * FROM t1;
  51. bzip2 300
  52. bzip2 300
  53. gzip 200
  54. gzip 200
  55. none 100
  56. none 100
  57. xz 400
  58. xz 400
  59. # zstd Compression.
  60. $ s3-file-upload bucket=copytos3 key=csv/5.csv.zst repeat=2 compression=zstd
  61. zstd,500
  62. $ s3-set-presigned-url bucket=copytos3 key=csv/5.csv.zst var-name=5_csv_url
  63. > COPY INTO t1 FROM '${5_csv_url}' (FORMAT CSV);
  64. > SELECT * FROM t1;
  65. bzip2 300
  66. bzip2 300
  67. gzip 200
  68. gzip 200
  69. none 100
  70. none 100
  71. xz 400
  72. xz 400
  73. zstd 500
  74. zstd 500
  75. # Map and Project.
  76. > CREATE TABLE t2 (a text DEFAULT 'hello', b text, c text);
  77. $ s3-file-upload bucket=copytos3 key=default_vals.csv repeat=5
  78. world
  79. $ s3-set-presigned-url bucket=copytos3 key=default_vals.csv var-name=default_vals_csv_url
  80. > COPY INTO t2 (b) FROM '${default_vals_csv_url}' (FORMAT CSV);
  81. > SELECT * FROM t2;
  82. hello world <null>
  83. hello world <null>
  84. hello world <null>
  85. hello world <null>
  86. hello world <null>
  87. # Test the AWS Source.
  88. > CREATE SECRET aws_secret AS '${arg.aws-secret-access-key}'
  89. > CREATE CONNECTION aws_conn
  90. TO AWS (
  91. ACCESS KEY ID = '${arg.aws-access-key-id}',
  92. SECRET ACCESS KEY = SECRET aws_secret,
  93. ENDPOINT = '${arg.aws-endpoint}',
  94. REGION = 'us-east-1'
  95. );
  96. # Test glob patterns.
  97. > CREATE TABLE t3 (a text, b text);
  98. > COPY INTO t3 FROM 's3://copytos3' (FORMAT CSV, AWS CONNECTION = aws_conn, PATTERN = "csv/**");
  99. > SELECT * FROM t3;
  100. bzip2 300
  101. bzip2 300
  102. gzip 200
  103. gzip 200
  104. none 100
  105. none 100
  106. xz 400
  107. xz 400
  108. zstd 500
  109. zstd 500
  110. # Test explicit file lists.
  111. > CREATE TABLE t4 (a text, b text);
  112. > COPY INTO t4 FROM 's3://copytos3/csv' (FORMAT CSV, AWS CONNECTION = aws_conn, FILES = ["csv/1.csv"]);
  113. > SELECT * FROM t4;
  114. none 100
  115. none 100